Java有很多方法可以连接数组,但Java Card似乎没有。有办法吗?
例如,我想连接这两个数组
byte[] a= {(byte) 'P', (byte) 'K'};
byte[] b= {(byte) 'T', (byte) 'G'};
我想要的是什么:
byte[] C= {(byte) 'P', (byte) 'K', (byte) 'T', (byte) 'G'};
有什么办法吗?
答案 0 :(得分:4)
在Java Card中,资源很少,因此数组永远不会连接在一起。数组连接将创建一个新对象,这意味着必须声明额外的内存。
最佳做法是仅使用new
运算符创建对象(对于EEPROM / flash中的持久数组或JCSystem.makeTransientByteArray
以及安装/个性化期间的瞬态内存(RAM)的朋友,而不是在正常运行期间该领域。
为了连接数组,您可以使用带有偏移量和长度的Util.arrayCopy()
来复制现有数组(包括APDU缓冲区)之间的数据。
类似地,几乎所有使用缓冲区的库调用都需要偏移量和长度,因此可以使用预先存在的数组(缓冲区) - 以边界检查为代价,您必须自己完成。
答案 1 :(得分:-1)
不,没有可用的API。