簡體   English   中英

Java:是否可以比較一個類 <?> 具有通用類型參數的對象?

[英]Java: Is it possible to compare a Class<?> object with a generic type parameter?

假設我有一個類別列表:

List<Class<?>> classes;

如果我現在選擇這些類之一,那么說...第二個,並且想知道它是否表示String類,我將執行以下操作:

classes.get(1).equals(String.class)

但是我怎么知道它是否代表一個泛型...說T?

class Foo<T> {

    void someMethod(){

        System.out.println(classes.get(1).equals(T)); //error: T cannot be resolved to a variable
    }
}

我試過了

T.class
(Class<T>)T

但是什么都行不通。 我真的很想知道這是否可能,如果可能,如何實現。
感謝您的關注! =)

由於類型擦除( http://en.wikipedia.org/wiki/Type_erasure ),在Java中這是不可能的T在運行時實際上並不存在,它僅作為編譯器的信息存在。 解決此問題的標准方法是從T任何地方傳入Class<T>並使用該類對象。

這是不可能的,但是您可以為類提供一些包裝器,這些包裝器將使用一種返回類型的方法來實現簡單接口,然后將該接口作為通用類型傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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