有誰知道如何獲得Java中的抽象類的聲明/封裝類?在這種情況下,我想從someClass中獲取anotherClass類。Java爲抽象類聲明類?
例子:
public class anotherClass extends someClass{
...
}
public abstract class someClass{
...
this.getClass().getEnclosingClass();
}
有誰知道如何獲得Java中的抽象類的聲明/封裝類?在這種情況下,我想從someClass中獲取anotherClass類。Java爲抽象類聲明類?
例子:
public class anotherClass extends someClass{
...
}
public abstract class someClass{
...
this.getClass().getEnclosingClass();
}
如果您在抽象類中調用this.getClass()
它仍然會返回類的實際實現的。在你的情況下調用this.getClass()
將返回anotherClass
,這是你想要的,如果我沒有錯。
唉奇怪,不知道爲什麼這樣的作品,但它確實:) – 2012-02-20 17:16:15
只是出於好奇,那麼你會如何真正從抽象類someClass獲得一些類? – 2012-02-20 17:17:28
@Kevin我試過'getClass()。getGenericSuperclass()',它工作 - 它顯示'someClass'。 – 2012-02-20 17:22:17
有沒有辦法做到這一點,而無需使用reflection
顯然你可以。見Boris Strandjev的回答。 – 2012-02-20 17:16:49
他已經在使用反射。 – 2012-02-20 17:17:11
@kevin thats不一樣,這可能是你想要的,但問題是有點不同 – NimChimpsky 2012-02-20 17:17:23
如果你想避免反射的解決方案,你可以強迫別人你自己通過一些奇怪的經常性仿製藥,像下面這樣:
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;
}
}
你在哪裏知道,這只是一個(即*的*聲明類)?它可能是數百個! – Ingo 2012-02-20 17:08:05
你的意思是什麼封閉類'someClass'? – 2012-02-20 17:10:14
它可能是,但不會那些是他們自己的someClass的實例嗎? – 2012-02-20 17:10:31