有谁知道如何在Java中获取抽象类的声明/封闭类?在这种情况下,我想从someClass中获取anotherClass类。
示例:
public class anotherClass extends someClass{
...
}
public abstract class someClass{
...
this.getClass().getEnclosingClass();
}
答案 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;
}
}