是否可以直接在 C++ NDK 中可靠地修改 java 字符串(无需复制)?

Is it possible to reliably modify a java string inside the C++ NDK directly (without making a copy)?

我看到的唯一方法是按照 here 所述获取参考来执行 jstring,然后是 GetStringCritical,并将其用作 u16string(所以作用于它的任何其他字符串也应该是 u16string)。

但我不确定这是否有效,因为似乎不确定 GetStringCritical 是否会 return 指向原始文件的指针(它可能会创建一个副本)。

我找到的关于这个的帖子比较老,我想知道是否有更好的方法来做到这一点,或者现在所有现代平台在使用 GetStringCritical 时都不会创建副本?

Java 中的字符串在设计上是不可变的。他们不能改变,如果可能的话,通过 C 找到一些 hack 来这样做可能会破坏事情。