if (hashtable.get(i) instanceof A) return (A)hashtable.get(i); else if (hashtable.get(i) instanceof B) return (B)hashtable.get(i); else if (hashtable.get(i) instanceof C) return (C)hashtable.get(i); else return null;
我说的Hashtable只是个例子。 我实际在方法中要用的是 A read = (A) Unmarshaller.unmarshal(A.class, reader); 最后我要返回read对象。mnwind(晨风)说的好像能解决我的问题,但我不知道下一步要怎么 “动态获取类型并生成实例”
return (A)hashtable.get(i);
else if (hashtable.get(i) instanceof B)
return (B)hashtable.get(i);
else if (hashtable.get(i) instanceof C)
return (C)hashtable.get(i);
else
return null;
我实际在方法中要用的是
A read = (A) Unmarshaller.unmarshal(A.class, reader);
最后我要返回read对象。mnwind(晨风)说的好像能解决我的问题,但我不知道下一步要怎么
“动态获取类型并生成实例”
同一个类中,不能声明方法名,参数相同但返回类型不同的方法
所以,你在方法声明当中,只能返回class A,class B ,class C的共同父类而当你根据返回值的具体类型作不同处理的时候,
可以参照pleonheart(只睡六小时)的说法
所谓“动态获取类型并生成实例”这个问题,有歧义
你西方从什么地方获取类型呢?
是一个实例,还是该类的名称(包括名称空间)还是该类相应的Class对象?
对于第一种情形:
o.getClass().newInstance()
第二种情形
Class.forName("pathOfTheClass.className").newInstance()
第三种情形
aClass.newInstance()
但在A read = (A) Unmarshaller.unmarshal(A.class, reader);
一句中的A.class需要传入子类的class才不出异常