[英]toString() a generic type in Java
如何打印通用 java 類型的類型?
反射? 有什么技巧嗎?
public class Foo<K> {
private K element;
@Override
public String toString() {
return "Type: " + K;
}
}
element.getClass().getSimpleName()
可能會做你所期望的。
由於類型擦除,您無法知道構造類時的類型參數是什么。 但是您可以使用element.getClass()
來獲取element.getClass()
的運行時類型(它可能是 type 參數的子類,盡管不能保證 - 可能存在未經檢查的強制轉換)。
但是,有一些技巧可以訪問類型參數。 Guice 可以做一些技巧。 同樣,如果您創建 Foo 的子類,如下所示: Foo<Integer> foo = new Foo<Integer>(){};
(注意{}
使其成為 Foo 的匿名子類),然后可以使用ParameterizedType type = (ParameterizedType) foo.getClass().getGenericSuperclass()
訪問類型參數,然后調用ParameterizedType的方法。 這是Guice 也利用的Java 反射API 的特性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.