2014-03-31 83 views
0

我有這樣的一個類,並且想要通過getClazz方法的返回來獲得如示例所示的類(這不起作用)。可能嗎?如何從類型推斷參數中獲取類?

public abstract class SuperTestClass<E> { 

    public Class<?> getClazz() { 
     return E.getClass(); 
    } 
} 
+0

是的,它似乎是相同的情況。謝謝! – adamitj

回答

2

除非您將其作爲班級的成員字段,否則您不能這樣做。由於類型擦除,泛型類型在運行時不可用。像這樣:

public class SuperTestClass<E> { 

    private final Class<E> genericClass; 

    public SuperTestClass(Class<E> genericClass) { 
    this.genericClass = genericClass; 
    } 

    // Changed return type 
    public Class<E> getClassType() { 
    return this.genericClass; 
    } 
} 


// Subclass 
public class TestClass extends SuperTestClass<Connection> { 

    public TestClass() { 
     super(Connection.class); 
    } 

} 
+0

這不是我強迫的自動化方式,但它在子類中使用無參數構造函數調用具有顯式推理類的超類構造函數(就像在TestClass中一樣)。 – adamitj

相關問題