我已经声明了以下hashmap:
HashMap<Integer, Hive> hives
Run Code Online (Sandbox Code Playgroud)
Hive是一个对象.
如果我调用"hives.get(2)",它会在该位置返回对象Hive的副本还是对它的引用?
我的目标是修改该位置的Hive对象.如果它返回引用,我可以修改返回的配置单元并完成.但是,如果返回一个副本,那么我将不得不将该副本放回到hashmap中.
对不起这个简单的问题.我试着寻找一个解决方案,但我看到它的任何地方只是说会返回值,它没有说它是否是值的副本或对它的引用.
谢谢,扎因
我有一个关于这个foreach的问题:
for(Element e : nullProof(setOfElements)){
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
让我们假设我定义了函数nullProof来返回一个非null的Set(因为我听说你不应该将null传递给一个增强的for循环.这是真的吗?):
private Set<Element> nullProof(Set<Element> s){
return s == null ? Collections.<Element> emptySet() : s;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是...... 在foreach中调用nullProof函数是否安全?具体来说,以下标题相当于:
for(Element e : setOfElements){ //assuming setOfElements != null
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人可以指出一些Java标准,它说这是定义的行为.
此外,有人可以解释这个foreach被称为"幕后"实际发生的事情吗?
假设setOfElements的大小为6.对于通过setOfElements的每次迭代,JVM是否会查找setOfElements 6次,还是创建该组的副本并引用该副本?我试图理解这种行为.谢谢您的帮助!