Java为一个抽象类声明了类?

时间:2012-02-20 17:02:53

标签: java reflection

有谁知道如何在Java中获取抽象类的声明/封闭类?在这种情况下,我想从someClass中获取anotherClass类。

示例:

public class anotherClass extends someClass{
...
}

public abstract class someClass{
...
   this.getClass().getEnclosingClass();
}

3 个答案:

答案 0 :(得分:4)

如果不使用reflection

,则无法执行此操作

答案 1 :(得分:3)

如果在抽象类中调用this.getClass(),它仍将返回实际实现的类。在你的情况下,调用this.getClass()将返回anotherClass,如果我没有错,这就是你想要的。

答案 2 :(得分:0)

如果你想避免反思解决方案,你可以强迫人们通过一些奇怪的反复出现的泛型传递给你自己,如下所示:

class AnotherClass extends SomeClass<AnotherClass> {
    public AnotherClass() {
        super(AnotherClass.class);
    }
}

abstract class SomeClass<T extends SomeClass<T>> {
    final Class<T> enclosing;
    public SomeClass(Class<T> c) {
        enclosing = c;
    }
}