日期:2014-05-20 浏览次数:20791 次
import java.util.*; public class Test { public static void main(String [] args) { try { ArrayList al = (ArrayList)Class.forName("java.util.ArrayList").newInstance(); }catch(Exception e) {} } }
------解决方案--------------------
java一样也有反射,可以从远端接受到字节流然后组装成你要的类。。。。
------解决方案--------------------
不明白你要干什么~`
为嘛要(Class.forName(strClassName))object这样写
------解决方案--------------------
彻底无关,你都用Object类型不就行了?
------解决方案--------------------
Class.forNanme().newInstance()反回的是一个Object
只需要强制转换就行了啊
Object o = Class.forName("java.util.ArrayList").newInstance();
ArrayList al = (ArrayList)o;
就行了啊。
------解决方案--------------------
外面的类肯定得知道这个Object到底完成了什么样的功能,否则 你程序如何的设计?
所以一般来说你可以先定义一个接口类,如List这样
至于实现类是什么还有些什么样的额外方法就可以不理会了
List list = newList("java.util.ArrayList")类似写法。
------解决方案--------------------
java的反映还有带参数的实例化、数组等,在网上都可以找到相关的样例代码的。
------解决方案--------------------
大家好,我是楼主,我要(Class.forName(strClassName))object这样写的目的是程序可以与对象的具体类型彻底无关,实现更大的灵活性。不知是否可行?谢谢!
______________________________
在目前版本的JDK中不可以。强转的类型必须显示地声明,一般可以强转为object的父类或者接口。