Có nghĩa là gì đối với một bộ sưu tập được khai báo cuối cùng trong Java? Có phải là không có thêm yếu tố nào có thể được thêm vào nó? Có phải rằng các yếu tố đã có không thể thay đổi? Có cái gì khác?Có nghĩa là gì đối với bộ sưu tập là cuối cùng trong Java?
Trả lời
No. Nó chỉ đơn giản có nghĩa là không thể thay đổi tham chiếu.
final List list = new LinkedList();
....
list.add(someObject); //okay
list.remove(someObject); //okay
list = new LinkedList(); //not okay
list = refToSomeOtherList; //not okay
Bạn đang bối rối giữa thức và bất biến Objects.
final
-> Bạn không thể thay đổi tham chiếu thành bộ sưu tập (Đối tượng). Bạn có thể sửa đổi bộ sưu tập/Đối tượng các điểm tham chiếu đến. Bạn vẫn có thể thêm các yếu tố vào bộ sưu tập
immutable
-> Bạn không thể sửa đổi nội dung của Bộ sưu tập/Đối tượng tham chiếu. Bạn không thể thêm các phần tử vào bộ sưu tập.
Bạn không thể làm điều này, tham chiếu là FINAL
final ArrayList<Integer> list = new ArrayList<Integer>();
ArrayList<Integer> list2 = new ArrayList<Integer>();
list=list2;//ERROR
list = new ArrayList<Integer>();//ERROR
Khi một biến thức đã được chỉ định, nó luôn luôn chứa cùng giá trị . Nếu biến cuối cùng giữ tham chiếu đến một đối tượng, thì trạng thái của đối tượng có thể bị thay đổi bởi các thao tác trên đối tượng, nhưng biến sẽ luôn tham chiếu đến cùng một đối tượng.
Làm cho biến cuối cùng đảm bảo bạn không thể chỉ định tham chiếu đối tượng đó sau khi được chỉ định. f bạn kết hợp các từ khóa cuối cùng với việc sử dụng các Collections.unmodifiableList, bạn ge behavi
final List fixedList = Collections.unmodifiableList(someList);
này đã là kết quả rằng danh sách được trỏ đến bởi fixedList không thể thay đổi. nó vẫn có thể được thay đổi thông qua các tài liệu tham khảo someList (do đó hãy chắc chắn rằng nó nằm ngoài phạm vi sau asignment này.)
Nhiều ví dụ đơn giản là tham gia một lớp cầu vồng thêm màu sắc của cầu vồng trong một 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. Bộ sưu tập java là gì?
- 2. Trong Bộ sưu tập lõi Java của LinkedList, việc sử dụng addLast là gì?
- 3. "Đồng bộ" nghĩa là gì trong Java?
- 4. Khai báo đối tượng là cuối cùng trong java
- 5. Sự khác biệt giữa nhóm và lập bản đồ trong Bộ sưu tập (Java) là gì?
- 6. Ngữ cảnh lối ra có nghĩa là gì đối với WaitHandle.WaitOne nghĩa là gì?
- 7. Loại bộ sưu tập cơ bản trong Scala là gì?
- 8. Colon có nghĩa là gì trong Java?
- 9. Thế hệ trong Bộ sưu tập rác là gì?
- 10. "Đối số mẫu thiếu" nghĩa là gì?
- 11. Việc gán đối tượng Java có nghĩa là gì?
- 12. Bộ sưu tập C# tốt nhất với hai phím và một đối tượng là gì?
- 13. Đối tượng 'an toàn chủ đề' có nghĩa là gì?
- 14. "Một phần tử cuối cùng" có nghĩa là gì trong vectơ?
- 15. Line.split (",") [1] có nghĩa là gì [Java]?
- 16. Loại `*` có nghĩa là gì đối với __vfptr?
- 17. Java UnsupportedOperationException với Bộ sưu tập các đối tượng
- 18. Sự khác nhau giữa Bộ sưu tập và Danh sách trong Java là gì?
- 19. "Thử" của Scala có nghĩa là gì nếu không bị bắt hoặc chặn cuối cùng?
- 20. Dòng Java 8 vs Bộ sưu tập Bộ sưu tập
- 21. "biểu tượng tên tập lệnh" có nghĩa là gì đối với hàm emacs set-fontset-font?
- 22. bộ sưu tập java so với bản đồ trong khung bộ sưu tập
- 23. Không gian trong bộ chọn jquery có nghĩa là gì?
- 24. "&" ở cuối lệnh linux có nghĩa là gì?
- 25. tùy chọn -O- có nghĩa là gì đối với wget?
- 26. Các tham số đối với CGPathAddCurveToPoint có nghĩa là gì?
- 27. '::' có nghĩa là gì?
- 28. Người mới bắt đầu cơ bản trong Java: 'đối số' có nghĩa là gì trong Java
- 29. phương thức java.util.Iterator.remove() có nghĩa là 'hoạt động tùy chọn' có nghĩa là gì?
- 30. 'args' có nghĩa là gì đối với CliBuilder?
Nó có nghĩa rằng đó là tài liệu tham khảo (danh sách của nó) không thể thay đổi – MadProgrammer
Xem thêm: [ý nghĩa của ArrayList cuối cùng là gì?] (http://stackoverflow.com/q/10750791/697449), [Khai báo một trường List với từ khóa cuối cùng] (http://stackoverflow.com/q/13079365/697449), [Java final modifier] (http://stackoverflow.com/q/4012167/697449) –