I don't think so. As the types are erased at run time all we see is a method 
with signature foo(List list). I think if you tried to add two methods to a 
class:

    public void foo(List<Long> x) { }
    public void foo(List<Integer> x) { }

then javac would refuse to compile it saying that both have the same erasure.

Attila.

On Nov 26, 2014, at 10:45 PM, Tim Fox <timvo...@gmail.com> wrote:

> Hello folks,
> 
> I have a Java method:
> 
> public void foo(List<Long> list) {
>  System.out.println("elem0 is " + list.get(0));
> }
> 
> Which I call from JS with a JS array:
> 
> obj.foo([123]);
> 
> This results in a ClassCastException as Nashorn converts the JS Array into a 
> java.util.List instance which contains a java.lang.Integer element (not 
> java.lang.Long)
> 
> Is there any way to force Nashorn to convert the array elements as Longs not 
> Integers?
> 
> Thanks.

Reply via email to