Tôi có mã sau đây. Tôi muốn giữ đối tượng lớp ngoài bằng cách sử dụng mà tôi đã tạo đối tượng lớp bên trong inner
. Tôi làm nó như thế nào?Nhận giữ đối tượng lớp ngoài từ đối tượng lớp bên trong
public class OuterClass {
public class InnerClass {
private String name = "Peakit";
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
InnerClass inner = outer.new InnerClass();
// How to get the same outer object which created the inner object back?
OuterClass anotherOuter = ?? ;
if(anotherOuter == outer) {
System.out.println("Was able to reach out to the outer object via inner !!");
} else {
System.out.println("No luck :-(");
}
}
}
EDIT: Vâng, một số bạn guys đề nghị thay đổi những lớp bên trong bằng cách bổ sung một phương pháp:
public OuterClass outer() {
return OuterClass.this;
}
Nhưng nếu tôi không có quyền kiểm soát để sửa đổi các lớp bên trong, sau đó (chỉ để xác nhận) chúng ta có một số cách khác để nhận đối tượng lớp ngoài tương ứng từ đối tượng lớp bên trong không?
Cảm ơn Jon! Nhưng nếu tôi không có quyền kiểm soát để sửa đổi lớp bên trong (kiểm tra chỉnh sửa của tôi). – peakit
@peakit: Sau đó, theo như tôi biết, bạn đã hết may mắn trừ khi bạn sử dụng sự phản chiếu. Nó cảm thấy như nó là một vi phạm đóng gói mặc dù thực sự - nếu lớp bên trong không muốn nói cho bạn biết ví dụ bên ngoài của nó là gì, bạn nên tôn trọng điều đó và cố gắng thiết kế sao cho bạn không cần nó. –
Điều này vẫn còn hợp lệ trong Java 8? – misty