Automatic type conversions: Passing char from Java to JS
    Jim Laskey (Oracle) 
    james.laskey at oracle.com
       
    Thu Jul 10 00:14:43 UTC 2014
    
    
  
It is.  There is no char type in JS, so it is treated like other POJOs.  You have to explicitly char.toString();  or String(char).  Auto conversion would be simple to implement but you would lose the functionality of Character;
jjs>  var c = new java.lang.Character('z');
jjs> c.compareTo(c);                        
0
Cheers,
-- Jim
On Jul 9, 2014, at 1:15 PM, Tim Fox <timvolpe at gmail.com> wrote:
> Hi,
> 
> I've noticed that if I pass a  java.lang.Character from Java to JS (e.g. via a JavaScript callback handler that is called from Java), then it is converted to a JavaScript object not a string.
> 
> I.e.
> 
> someJavaObject.setHandler(function(char) {
>  console.log(typeof char);
> });
> 
> Then in the Java object:
> 
> class MyJavaClass {
> 
>  public void setHandler(Consumer<Character> handler) {
>     handler.accept('X');
>  }
> 
> }
> 
> The following is logged:
> 
> object
> 
> If I instead pass a java.lang.String from Java to JS, it is converted to JS string as I would expect.
> 
> Intuitively I would expect a java.lang.Character to be converted to a JS string too.
> 
> Is the current Nashorn behaviour as expected?
> 
> Cheers
> 
> 
    
    
More information about the nashorn-dev
mailing list