关于List应用java反射机制 因为List里面纺织的对象是动态的,而从List取出来的对象都是Object类型的,请问怎么判断从List中去出的真正对象,进行加载。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的类型是动态的 比如Employee e = (Employee)list.get(0);这里Employee是未知的,也许是Employee,也许是其它,我这个动态的东西怎么弄才好呢?我是在方法的参数中设了一个叫做objType的String类型的变量,我可以通过Class.forName(objType)得到Class,但是我怎么才能把他用到Employee e = (Employee)list.get(0)这里呢,此处的Employee应该是变的。 Object a=list.get(i);Test s=new Test();if(a instanceof Test) System.out.println("a 是Test的实例。。");else System.out.println("a 不是Test的实例。。"); for(int i=0;i<list.size();i++){ if(list.get(i) instanceof Employee ) System.out.println("a 是Employee 的实例。。do something"); else if(list.get(i) instanceof Employee1 ) System.out.println("a 是Employee1 的实例。。do something"); else if(list.get(i) instanceof Employee2 ) System.out.println("a 是Employee2 的实例。。do something");这里的Employee,Employee1,Employee2 就是你 说的动态的了,你可以从属性文件或xml中读取进行动态判断~!还有楼主你下次问问题麻烦你花点分来提问 奇怪了,你说a应该是Object类型的,那么它肯定不是Test的一个对象,但是打印出来的却显示它是Test的对象。但如果Test里面如果有属性或者方法的话,那么对象a却没有它们,唉,奇怪了。 使用Java集合的“缺点”是在将对象置入一个集合时丢失了类型信息。之所以会发生这种情况,是由于当初编写集合时,那个集合的程序员根本不知道用户到底想把什么类型置入集合。若指示某个集合只允许特定的类型,会妨碍它成为一个“常规用途”的工具,为用户带来麻烦。为解决这个问题,集合实际容纳的是类型为Object的一些对象的句柄。这种类型当然代表Java中的所有对象,因为它是所有类的根。当然,也要注意这并不包括基本数据类型,因为它们并不是从“任何东西”继承来的。这是一个很好的方案,只是不适用下述场合:(1) 将一个对象句柄置入集合时,由于类型信息会被抛弃,所以任何类型的对象都可进入我们的集合——即便特别指示它只能容纳特定类型的对象。举个例子来说,虽然指示它只能容纳猫,但事实上任何人都可以把一条狗扔进来。(2) 由于类型信息不复存在,所以集合能肯定的唯一事情就是自己容纳的是指向一个对象的句柄。正式使用它之前,必须对其进行造型,使其具有正确的类型。 利用泛型类List<T> list=new ArrayList<T>(); new LinkedList<T>(); ````````````````````` FILE创建文件 关于泛型List<T>和List<?>的区别? 急!!!启动jar文件时报Java Virtual Machine error that said: Cannot Find Main Class是什么原因 如何提取网页上表格中的数据,望大侠指点! 求汉字专拼音的代码 求一个完整的FTP源代码 一道考试题(急) 请问我单位机子是装WIN98的,那么怎么设置JAVA_HOME\CLASS_PATH这些变量啊,因为WIN98是没有环境变量的 怎样过滤掉字符串中的空格? 提问^^ 帮忙解决一下 问个布局问题 String的基础问题
Test s=new Test();
if(a instanceof Test)
System.out.println("a 是Test的实例。。");
else
System.out.println("a 不是Test的实例。。");
if(list.get(i) instanceof Employee )
System.out.println("a 是Employee 的实例。。do something");
else if(list.get(i) instanceof Employee1 )
System.out.println("a 是Employee1 的实例。。do something");
else if(list.get(i) instanceof Employee2 )
System.out.println("a 是Employee2 的实例。。do something");
这里的Employee,Employee1,Employee2 就是你 说的动态的了,你可以从属性文件或xml中读取
进行动态判断~!
还有楼主你下次问问题麻烦你花点分来提问
(1) 将一个对象句柄置入集合时,由于类型信息会被抛弃,所以任何类型的对象都可进入我们的集合——即便特别指示它只能容纳特定类型的对象。举个例子来说,虽然指示它只能容纳猫,但事实上任何人都可以把一条狗扔进来。
(2) 由于类型信息不复存在,所以集合能肯定的唯一事情就是自己容纳的是指向一个对象的句柄。正式使用它之前,必须对其进行造型,使其具有正确的类型。
List<T> list=new ArrayList<T>();
new LinkedList<T>();
`````````````````````