再问:为什么使用Class.forName().newInstance创建对象? 刚进一新公司,在看代码,里面全部用Class.forName().newInstance的方式也创建对象,不是很理解,这样有什么好处吗?只是运行时生成,少了编译的时间。 但我测试了创建1000个对象,和new相对并不快啊。求解,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用在runtime时候根据传入的class对象创建对象,很多时候编译阶段无法确定将要实例化的对象的类型。ps:不是为了速度,反射一般比较慢 有时候 Class.forName().newInstance 有利于模块间减少耦合, 编码和编译阶段可以不依赖其它模块 这样可以动态加载与模块低耦合的类比如我原来课程设计时做的一个桌面应用我把皮肤的类包路径配在一个配置文件里 找到一个往lib里扔一个 只更新配置文件不改代码就行了然后我运行时从配置文件中读取皮肤类的类包路径然后用户就可以选择已有皮肤风格了选择的时候用反射生成实例即可 减少耦合性,正如 1 楼所说的,使用具体的实现不是在编译期决定的,而是在运行期决定的,那一般就采用这种方法了。说到性能问题,这样创建对象的速度比使用 new 的速度慢 1000 倍! 耦合性怎么就降低了,不是很明白比如在类A中需要用到类B的对象:使用 B b=new B(); 和 B b=(B)Class.forName("B");..... 假如我把具体的实现类写到配置文件中去。代码中这样用(假如 A 是接口,className 是从配置中读出来的类名):A a = (A)Class.forName(className).newInstance();这样的话,我以后可以通过配置文件修改,不用更改代码。 跟着果果学Java,哈哈~! JAVA基础 java连接数据库 关于服务器并发数的测试疑问 一个关于对象的问题 采用STRUTS文件下载上传的问题,请各位给于指导! 小问题,兄弟们帮忙看一下 在一个窗口中如何放三个面板,程序有误! 急:JDK1.4怎样和Access数据库建立连接 北京的朋友 小白求找茬。。。。。 java搜索引擎的问题,希望高手写详细点 netbeans JDialog 如何设置窗口大小
比如
我原来课程设计时做的一个桌面应用
我把皮肤的类包路径配在一个配置文件里
找到一个往lib里扔一个 只更新配置文件不改代码就行了
然后我运行时从配置文件中读取皮肤类的类包路径
然后用户就可以选择已有皮肤风格了
选择的时候用反射生成实例即可
比如在类A中需要用到类B的对象:使用 B b=new B(); 和 B b=(B)Class.forName("B");.....
假如我把具体的实现类写到配置文件中去。代码中这样用(假如 A 是接口,className 是从配置中读出来的类名):A a = (A)Class.forName(className).newInstance();这样的话,我以后可以通过配置文件修改,不用更改代码。
跟着果果学Java,哈哈~!