Có bất kỳ trường hợp nào trong đó Class.getDeclaringClass
có thể cho kết quả khác với Class.getEnclosingClass
không?Bao gồm lớp học vs Khai báo lớp
tôi nghĩ rằng nó có thể làm gì với một lớp con của lớp bên ngoài instantiating một lớp bên trong mà không được khai báo là tĩnh, nhưng tôi đã không thể có được một sự khác biệt như vậy:
public class Main {
private static class StaticInnerClass {
}
private class MemberInnerClass {
}
private static class ChildClass extends Main {
}
public MemberInnerClass getMemberInnerClassInstance() {
return new MemberInnerClass();
}
public static void main(String[] args) {
System.out.println(StaticInnerClass.class.getDeclaringClass());
System.out.println(StaticInnerClass.class.getEnclosingClass());
System.out.println(MemberInnerClass.class.getDeclaringClass());
System.out.println(MemberInnerClass.class.getEnclosingClass());
System.out.println(new ChildClass().getMemberInnerClassInstance().getClass().getEnclosingClass());
System.out.println(new ChildClass().getMemberInnerClassInstance().getClass().getDeclaringClass());
}
}
Output :
class Main
class Main
class Main
class Main
class Main
class Main
mục đích của bạn là gì ? – MartinL
@MartinL: Tôi có một lớp 'X' khai báo' MemberInnerClass', trong thuật ngữ của ví dụ của tôi. Tôi cũng có một số lượng lớn các lớp con của 'X'. Tôi có thể cần xác định lớp con nào của' X' đã tham gia vào một ví dụ cụ thể của 'MemberInnerClass'; tôi đã làm việc ed xung quanh điều này bây giờ nhưng đã tò mò về tuyên bố vs kèm theo lớp. – OpenSauce