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.