如果一个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() } }