在此处找到http://kickjava.com/1139.htm#ixzz1mv2nEWg7:
“具有getDeclaringClass的替代项是,在Java语言规范中,匿名内部类不计为类的成员,而命名内部类为。因此,此方法为匿名类返回null。替代方法getEnclosingClass对匿名和命名类均有效。”
例如:
public class Test { public static void main(String[] args) { new Object() { public void test() { System.out.println(this.getClass().getDeclaringClass()); //null System.out.println(this.getClass().getEnclosingClass()); //not null } }.test(); }}方法范围内的非匿名类也是如此:
class Foo { Class<?> bar() throws NoSuchFieldException { class Bar<S> { } return Bar.class; } static void main(String[] args) throws NoSuchFieldException { System.out.println(new Foo<Void>().bar().getDeclaringClass()); // null System.out.println(new Foo<Void>().bar().getEnclosinglass()); // Foo }}


