为了最大限度地减少复制操作,并直接访问字符串的字符串内容,JNI提供了GetStringCritical,该功能一直运行良好.然而,随着Java中"字符串压缩"的引入,字符串编码可以是Latin1或UTF16.在讲英语的地区,绝大多数字符可以使用Latin1表示,因此大多数字符串对象在内部使用Latin1存储.这在使用GetStringCritical时造成了一个尴尬的情况,因为包含的字符串将被强制代码转换为UTF16,这意味着一定的复制操作.
还有没有办法在C++端直接访问字符串内容?我们真的需要求助于反射来从字符串中检索byte[]值吗?