簡體   English   中英

toString() 是 Java 中的泛型類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM