集合在Java中声明为最终意味着什么?是不是可以添加更多元素?是否已经存在的元素不能改变?还有别的吗?集合在Java中最终是什么意思?
6
A
回答
7
不,这只是表示参考不能更改。
final List list = new LinkedList();
....
list.add(someObject); //okay
list.remove(someObject); //okay
list = new LinkedList(); //not okay
list = refToSomeOtherList; //not okay
3
你得到最后和不变对象之间的混淆。
final
- >不能将参考更改为集合(Object)。您可以修改集合/对象的参考点。您仍然可以将元素添加到集合
immutable
- >您不能修改集合/对象的内容参考点。您无法将元素添加到集合中。
1
你不能做到这一点,引用是FINAL
final ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();
list=list2;//ERROR
list = new ArrayList<Integer>();//ERROR
一旦最终的变数已被分配,它总是包含相同 值。 如果最后一个变量持有对某个对象的引用,则可以通过该对象上的操作更改该对象的状态,但该变量将始终引用同一个对象。
1
使变量最终确保在赋值后不能重新分配该对象引用。 F你在使用Collections.unmodifiableList的结合final关键字,您戈behavi
final List fixedList = Collections.unmodifiableList(someList);
这与导致该列表指向fixedList不能更改。它仍可以通过someList参考变化(从而确保它是超出范围这asignment后。)
更简单的例子正在彩虹类添加彩虹的颜色在一个HashSet
public static class Rainbow {
/** The valid colors of the rainbow. */
public static final Set VALID_COLORS;
static {
Set temp = new HashSet();
temp.add(Color.red);
temp.add(Color.orange);
temp.add(Color.yellow);
temp.add(Color.green);
temp.add(Color.blue);
temp.add(Color.decode("#4B0082")); // indigo
temp.add(Color.decode("#8A2BE2")); // violet
VALID_COLORS = Collections.unmodifiableSet(temp);
}
/**
* Some demo method.
*/
public static final void someMethod() {
Set colors = RainbowBetter.VALID_COLORS;
colors.add(Color.black); // <= exception here
System.out.println(colors);
}
}
}
相关问题
- 1. 什么是“?”在Java中的意思是?
- 2. 是什么意思:是什么意思?
- 3. 在Java中什么意思?
- 4. 什么意思在java中?
- 5. 什么是Netbeans中的变量可以是最终的意思?
- 6. Java - “\ n”是什么意思?
- 7. Java(null)是什么意思?
- 8. “java result”是什么意思?
- 9. Java - 0xXXXc是什么意思?
- 10. “java -classpath。:”是什么意思?
- 11. super(Application.class)是什么意思;在Java中?
- 12. 在Java中^ =是什么意思?
- 13. 在java中是什么意思?
- 14. 在java中,“| =”和“^ =”是什么意思?
- 15. 在Java中,NaN是什么意思?
- 16. 在java中=() - >是什么意思?
- 17. 是什么意思,lines.next.toInt在Java中
- 18. 在java中“创建”是什么意思
- 19. 是什么意思,在Python中是什么意思?
- 20. “插入顺序保存在集合中”是什么意思?
- 21. 什么意思:在x86中是什么意思?
- 22. Java中的ArrayList是什么意思
- 23. Java中的$(“something”)是什么意思?
- 24. Java中的“||”是什么意思?
- 25. Java API中的“equals”是什么意思?
- 26. java中的Interface.class是什么意思?
- 27. Java中的“synchronized”是什么意思?
- 28. JAVA中的$ 1是什么意思?
- 29. Java中的super()。这是什么意思?
- 30. Java中的circumflex是什么意思?
这意味着它是引用(列表的)不能改变 – MadProgrammer 2014-10-22 04:41:34
另请参见:[什么是最终的ArrayList的意义?](http://stackoverflow.com/q/10750791/697449),[用一个列表字段声明最终关键字](http://stackoverflow.com/q/13079365/697449),[Java final modifier](http://stackoverflow.com/q/4012167/697449) – 2014-10-22 04:51:13