【发布时间】:2017-06-10 15:44:33
【问题描述】:
我知道Class.getDeclaredClasses() 可以获取它声明的所有类,但不包括匿名类。
我想知道有没有办法通过封闭类获取所有封闭类?例如,我想获取在Root 中定义的所有封闭类用于测试目的。
class Root{
void run(){
Runnable task = new Runnable(){
public void run(){}
};
task.getClass().getEnclosingClass();// return Root.class
// but I want to get all enclosed class via Root.class, for example:
// Root.class... == task.getClass()
}
}
预期结果是:[class of task]。
【问题讨论】:
-
task是局部变量的名称,我认为没有任何方法可以得到它。或者你到底想达到什么目标? -
@luk2302 但
task是在Root中定义的,编译器会为匿名类生成一个额外的类。 -
getDeclaredClasses()会这样做吗?我没用过。啊,不,显然这就是您要问的问题,但您忽略了es -
@DavidConrad
getDeclaredClasses()返回所有声明的类,除了匿名类。 -
您的需求是什么,您的用例是什么?这可能是伪装的XY Problem?