Tôi tin rằng bức ảnh đẹp nhất của bạn là để công bố danh sách như một danh sách các đối tượng:
List<Object> anything = new ArrayList<Object>();
Sau đó, bạn có thể đặt bất cứ điều gì bạn muốn trong nó, như:
anything.add(new Employee(..))
Rõ ràng, bạn sẽ không thể đọc bất kỳ điều gì ngoài danh sách mà không có cách truyền thích hợp:
Employee mike = (Employee) anything.get(0);
Tôi sẽ không khuyến khích sử dụng các loại nguyên liệu như:
List anything = new ArrayList()
Kể từ khi toàn bộ mục đích của Generics là chính xác để tránh chúng, trong thời gian tới Java có thể không còn suport loại thô, các loại nguyên liệu được coi là di sản và một khi bạn sử dụng một loại nguyên liệu bạn không được phép sử dụng generics ở tất cả trong một tham chiếu nhất định.Ví dụ, hãy xem xét một một câu hỏi này: Combining Raw Types and Generic Methods
Nguồn
2012-06-17 18:03:28
Danh sách
nó phải là 'Danh sách();' khi bạn nhận được đối tượng như 'example.get (0)' bạn cần tạo một dàn diễn viên rõ ràng. Lớp nào triển khai phương thức myFunction()? Nếu 'Employee' thực hiện' myFunction() ', bạn nên làm một cái gì đó như' ((Employee) (example.get (0))). MyFunction(); ', với điều này bạn chỉ ra rằng đối tượng được lấy từ vị trí 0 có thể là xử lý như một nhân viên. Tất nhiên nếu nó không phải là một ngoại lệ sẽ được ném. –
táo hạng { giá int; public void myFunction (int iPrice) { giá = iPrice; } } lớp màu cam { giá int; public void myFunction (int iPrice) { giá = iPrice; } } chính lớp công khai { chính trống công cộng (Chuỗi [] args) { Danh sách danh sách = new ArrayList <>(); // tạo 3 đối tượng táo vào danh sách list.add (new apple()); list.add (new apple()); list.add (new orange()); list.get (0)./* "get (0)." điều này không sử dụng đối tượng táo và chức năng của tôi */ } } –
mypolat