casting typed array to java byte[] is it possible?
Hannes Wallnöfer
hannes.wallnoefer at oracle.com
Fri Oct 12 08:10:27 UTC 2018
Hi Paulo,
Java.to() would be the way to go, but as you found out it does not support typed arrays.
What works is to convert the typed array to an ordinary JS array and convert to byte[] from there:
Java.to(Array.prototype.slice.call(arr), 'byte[]‘);
That’s obviously not very elegant nor efficient, but it’s the only workaround I can think of.
Hannes
> Am 11.10.2018 um 20:21 schrieb Paulo Lopes <pmartins at redhat.com>:
>
> Hi,
>
> I'm trying to handle a case where a Uint8Array is being passed to a
> method, that has the signature:
>
> String encode(byte[]);
>
> Sadly nashorn fails with:
>
> java.lang.ClassCastException: Cannot cast
> jdk.nashorn.internal.objects.NativeUint8Array to [B
>
> And trying to help the cast with:
>
> javaObj.encode(Java.to(arr, 'byte[]'));
>
> Does not help either. The documentation on typed arrays is quite scarce
> so I cannot see how to handle this, does anyone have a clue?
>
> Thanks!
> Paulo
>
More information about the nashorn-dev
mailing list