只知道2个类的包名字符串,能否进行类型转换
比如A类的包名为a.a,B类的包名为a.b,B类继承A类
我想通过Class.forName("a.b").newInstance()建个B类的实例,然后怎么转换成A类的实例?
因为A类的包名不是固定的,所以不能用a.a A = Class.forName("a.b").newInstance();写死来进行转换
请问怎么才能进行转换?
谢谢
比如A类的包名为a.a,B类的包名为a.b,B类继承A类
我想通过Class.forName("a.b").newInstance()建个B类的实例,然后怎么转换成A类的实例?
因为A类的包名不是固定的,所以不能用a.a A = Class.forName("a.b").newInstance();写死来进行转换
请问怎么才能进行转换?
谢谢
下次可能C类的包名为a.a.a,D类的包名为a.a.b,D类继承C类
正常的做法是:
a.a A = Class.forName("a.b").newInstance();
和
a.a.a C = Class.forName("a.a.b").newInstance();
我想能不能用一行代码解决a.a,a.a.a的实例类型转换,因为有时候不确定包名是什么,
不要考虑a的包名
b bb = Class.forName("a.b").newInstance();
a aa =bb;
a aa =bb; a是不固定的字符串,好像必须写死才行
包名可以这样用的?
public <E> E getInstance(){
Class<E> cls = (Class<E>) Class.forName("a.b");
return cls.newInstance();
}a.a a = getInstance();
a.c c = getInstance();