如何获得一个未声明泛型集合的泛型类型?
2009-01-04 07:28
316 查看
关注此问题的人请看论坛的帖子: http://topic.csdn.net/u/20090103/11/be06bda3-d268-4961-af08-840a3909e4c4.html
看代码:
Map <String,User> map1 = new HashMap <String,User>();
Map map2 = map1;
现在对你可见的就只有map2,有什么办法可以可以得知map2的泛型就是 <String,User>呢????
注意:遍历map2,获得key和value,再获得其类型不算解决方案。
我个人的观点:
泛型可以看成属于编译期的检查,所以.... 你无法在运行期进行判断。
也就是说,如果你的变量是泛型的,则你的所有操作都会被编译器检查,如果你没有,那么
import java.util.HashMap;
import java.util.Map;
/**
* 泛型测试
*
* @author 老紫竹(Java世纪网,java2000.net)
*/
public class Test {
public static void main(String[] args) throws Exception {
Map<String, Object> map1 = new HashMap<String, Object>();
Map map2 = map1;
map2.put(3, 4);
}
}
可见,系统并不会在运行期报错,不让map2存入2个整数类型。所以我认为在类的内部,泛型并不是运行期强制性的。
看代码:
Map <String,User> map1 = new HashMap <String,User>();
Map map2 = map1;
现在对你可见的就只有map2,有什么办法可以可以得知map2的泛型就是 <String,User>呢????
注意:遍历map2,获得key和value,再获得其类型不算解决方案。
我个人的观点:
泛型可以看成属于编译期的检查,所以.... 你无法在运行期进行判断。
也就是说,如果你的变量是泛型的,则你的所有操作都会被编译器检查,如果你没有,那么
import java.util.HashMap;
import java.util.Map;
/**
* 泛型测试
*
* @author 老紫竹(Java世纪网,java2000.net)
*/
public class Test {
public static void main(String[] args) throws Exception {
Map<String, Object> map1 = new HashMap<String, Object>();
Map map2 = map1;
map2.put(3, 4);
}
}
可见,系统并不会在运行期报错,不让map2存入2个整数类型。所以我认为在类的内部,泛型并不是运行期强制性的。
相关文章推荐
- 如何通过一个方法来传入并处理不同泛型类型的集合
- 关于如何使用反射声明一个泛型类型变量(泛型参数是动态的)的问题
- 自己写一个泛型集合类型,可实现添加和遍历
- Java如何获得一个类里面的各个属性和类型
- c++ 如何获得一个变量的类型名称?
- 如何获得泛型的类型。。。
- 如何在使用了泛型限定的集合中存入其它类型的元素?
- 如何在运行时(Runtime)获得泛型的真正类型
- Java如何获得一个类里面的各个属性和类型
- 如何将一个List<Map<String,String>>类型的集合数据转换成json格式输出
- 如何返回一个只读泛型集合
- C# 2005如何根据类型声明的字符串反射创建泛型(Generic)对象
- 如何使用反射确定一个属性是否实现了IList接口,如何确定元素量为空的集合的元素类型。
- 如何辨认一个复杂声明表达式子中变量的类型?
- 再谈如何以最简单的方法将泛型为String类型的集合或String类型的数组转化为逗号间隔字符串形式
- Java中如何获得集合变量的集合中的类型参数
- 如何获得当前类的字段,方法参数泛型的类型
- Java如何获得一个类里面的各个属性和类型
- Java如何获得一个类里面的各个属性和类型
- Java中如何获得集合变量的集合中的类型参数