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. 规范化ORACLE中的列名称11g
- 2. 规范名称在Godaddy中重定向?
- 3. 如何规范公司名称
- 4. 为什么名称修改不规范
- 5. “git merge”中的分支名称规范中的通配符
- 6. 如何根据证书主题验证规范名称(通用名称,cn)?
- 7. 反规范化模式的“标准名称”是什么?
- 8. 用户名接口规范
- 9. iOS代码签名规范
- 10. 命名空间规范
- 11. 的XAML名称范围
- 12. 字段名称的命名规则
- 13. 哪个规范名称更好? www还是非www?
- 14. magento以规则名称
- 15. 项目名称犯规秀
- 16. Objective-C中参数的命名规范
- 17. Nginx的URL规范化和子域名
- 18. 在范围旁显示范围名称
- 19. VBA动态名称范围
- 20. 搜索范围名称
- 21. 如何规范化大型的用户生成的公司名称数据集?
- 22. iTunes Connect:如何找出我的应用程序的规范名称?
- 23. 在'System.Windows.Style'的名称范围中找不到名称
- 24. 在'System.Windows.Controls.ListView'的名称范围中找不到'ScaleTransform'名称
- 25. 在'System.Windows.Controls.ControlTemplate'的名称范围中找不到'Bd'名称
- 26. CLIPS:对规则名称的引用
- 27. 从IBM ODM暴露规则的名称
- 28. 使用阅读JSON的名称常规
- 29. Snakemake当前规则的名称
- 30. 规范
如果它只是一个类,你可以使用'Class.forName'。 –
感谢@LouisWasserman,但它不只是一个类,因为这个规范表示可以像“java.util.List”。 我找到了解决方案,我已经将它添加到我的最初问题。 –
halfwarp
如果你找到了解决方案,你应该添加一个答案。 – Holger