如果一个class表示在方法中的一个本地或匿名class, 那么通过java.lang.Class.getEnclosingMethod()方法将返回的底层类的立即封闭方法。 反之则为NULL。
Reference: http://www.yiibai.com/javalang/class_getenclosingmethod.html
加了匿名类的输出
package com.my.java.lang;
public class ClassDemo {
public Object c;
public ClassDemo() {
class ClassA{};
c = new ClassA();
}
public Object classAObject() {
class ClassA{};
return new ClassA( );
}
public Runnable classWithAnonymousClass() {
return new Runnable() {
public void run() {
}
};
}
public static void main(String[] args) {
ClassDemo classDemo = new ClassDemo();
Class cls = classDemo.classAObject().getClass();
System.out.print("Local class with Method = ");
System.out.println(cls.getEnclosingMethod());
//Local class with Method = public java.lang.Object com.my.java.lang.ClassDemo.classAObject()
System.out.print("Anonymous class with Method = ");
System.out.println(classDemo.classWithAnonymousClass().getClass().getEnclosingMethod());
// Anonymous class with Method = public java.lang.Runnable com.my.java.lang.ClassDemo.classWithAnonymousClass()
}
}