我有一個通用的基礎類:泛型類 - 的getClass()的getName()
public class BaseLabel<T> extends JXLabel {
private static final long serialVersionUID = 1L;
public BaseLabel() {
System.out.println(T.class.getClass().getName()); //error
}
}
和兒童類:
public class ChildLabel extends BaseLabel<ChildLabel> {
private static final long serialVersionUID = 2L;
public ChildLabel() {
}
}
我收到編譯錯誤。
有沒有什麼辦法從BaseClass的構造函數中獲取實際的類名。在這裏,通過實際的課程,我指的是我將要實例化的那個課程。
例如,我正在實例化ChildClass,ChildClass clz = new ChildClass()
;
然後println()
將打印package.ChildClass
。
在此先感謝。
的編譯錯誤是:
cannot select from a type variable System.out.println(T.class.getClass().getSimpleName());
如果我把從abstract BaseClass
的構造this.getClass.getSimpleName()
。它正在打印ChildClass
。
爲什麼?
這是由於,因爲我實例化ChildClass
所以這是指向ChildClass
的對象。
您要求的信息在編譯時不可用,所以據我所知,您要做的事情是不可能的。但即使在運行時,您也會遇到Java獲取此信息的一般限制。請閱讀本文,特別是有關泛型和類型刪除的部分:[Java理論與實踐:泛型](http://www.ibm.com/developerworks/java/library/j-jtp01255/index.html) – 2012-02-23 16:24:45
什麼是編譯錯誤說? – Thomas 2012-02-23 16:25:13
您正在導入JXLabel嗎? – ewok 2012-02-23 16:27:18