0
A
回答
0
類是一個類型,所以沒有java.lang.Class
實現java.lang.reflect.Type
。
換句話說,你可以簡單地寫
java.lang.reflect.Type listType=java.util.List.class;
或
java.lang.reflect.Type listType=Class.forName("java.util.List");
如果類型是通用的,一個Class
實例可以代表其原始類型或通用(參數化)類型,取決於上下文,例如
static void checkType(Class<?> type, Class<?> implemented) {
if(!implemented.isAssignableFrom(type)) {
System.out.println(type+" is not a subtype of "+implemented);
}
else if(implemented.isInterface()) {
for(Type t: type.getGenericInterfaces()) {
if(t==implemented) {
System.out.println(type+" implements raw "+implemented);
}
else if(t instanceof ParameterizedType) {
ParameterizedType pt=(ParameterizedType)t;
if(pt.getRawType()==implemented) {
System.out.println(type+" implements "+implemented+" with");
TypeVariable<?>[] p = implemented.getTypeParameters();
Type[] actual = pt.getActualTypeArguments();
assert p.length==actual.length;
for(int i=0; i<actual.length; i++)
System.out.println("\t"+p[i]+" := "+actual[i]);
}
}
}
}
}
abstract class RawList implements List {}
checkType(RawList.class, List.class);
abstract class StringToIntMap implements Map<String,Integer> {}
checkType(StringToIntMap.class, Map.class);
打印
class Test$1RawList implements raw interface java.util.List
class Test$1StringToIntMap implements interface java.util.Map with
K := class java.lang.String
V := class java.lang.Integer
相關問題
- 1. 更改域名規範名稱
- 2. 規範化ORACLE中的列名稱11g
- 3. 庫,但沒有規範的名稱
- 4. htaccess規範名稱重定向
- 5. 規範名稱到RDS實例
- 6. 如何規範公司名稱
- 7. 規範名稱在Godaddy中重定向?
- 8. 爲什麼名稱修改不規範
- 9. 主機名稱VS規範主機名稱
- 10. Fortran的未解決的模塊程序規範名稱
- 11. 「git merge」中的分支名稱規範中的通配符
- 12. 如何根據證書主題驗證規範名稱(通用名稱,cn)?
- 13. 在Java中的DOM文檔中規範XML名稱空間?
- 14. Ember數據不使用不規範的模型名稱
- 15. 如何區分規範名稱的數組?
- 16. 反規範化模式的「標準名稱」是什麼?
- 17. JavaScript名稱範圍
- 18. 命名空間規範
- 19. iOS代碼簽名規範
- 20. 用戶名接口規範
- 21. eclipse maven文件名規範
- 22. C#規範文件名
- 23. 規範URL規範
- 24. 的XAML名稱範圍
- 25. 範圍的返回名稱
- 26. 返回範圍的名稱。
- 27. 字段名稱的命名規則
- 28. Powershell:AD用戶MemberOf>對象規範名稱
- 29. 豐富片段 - 在搜索網站名稱(規範網站URL)
- 30. 如何在java中從類規範名稱創建類?
如果它只是一個類,你可以使用'Class.forName'。 –
感謝@LouisWasserman,但它不只是一個類,因爲這個規範表示可以像「java.util.List」。 我找到了解決方案,我已經將它添加到我的最初問題。 –
halfwarp
如果你找到了解決方案,你應該添加一個答案。 – Holger