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