0
当java将字符串传递给函数时,它传递的值不是用于引用的传递引用,请点击here。JSON解析器,它接受字符串的引用并将其解析为JsonObject
getKeyValue(String o); // This creates a new string and passed by value
Class A
{
String o;
}
A a;
getKeyValue(A a); // This passes reference of object a, String o is not duplicated.
所以当我有一个多层次的JSON对象像{A:{B:{C: “d”}}}和我有我需要从像得到值的路径:乙C(路径)
for(String s: path.split(':')
{
jsonObject = jsonObject.get(s)
}
println jsonObject
假设我有2 GB的字符串,现在当我做jsonObject.get(S)我创造价值由2 GB副本,并将其传的方法和GC需要清除所有记忆每次我试着走一步。
有没有什么办法避免这种情况,而不写一个库来接受字符串作为参考使用StringBuilder等..。
是否有任何库在java中解决这个问题。
* Java中的所有*都使用按值传递......说实话,我不清楚你在问什么。使用'getKeyValue'方法和'Class A'的问题的前半部分特别不明确:( –
)当你在Java中传递一个字符串时,它不会被复制,它只在你修改它时被复制,因为Java字符串是不可变的并修改它们以创建一个新的实例 – matanso
@JonSkeet True。但是当a传递“引用被复制为一个值”而不是整个对象时,请检查http://javapapers.com/core-java/java-通过值传递参考/ – Prabhath