java学习之动态对象的生成
2016-05-12 18:46
465 查看
这篇文章我们谈一个有趣的问题,我们通过修改项目的配置文件就可以动态的生成对应的对象,其实很简单,第一我们需要在配置文件里面写对应的类名,然后再类里面用到了一些java反射的一些基础,如果忘记了的话,我之前写了一篇java的反射的基础知识,这里我就直接贴出代码,就不做太多的解释了。
这里的config就是我们需要输入的一些信息
package com.jk.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import javax.imageio.stream.FileImageInputStream; public class Test { public static void main(String[] args) { String res = ""; try { // 得到配置文件里面的信息 FileInputStream f = new FileInputStream( "D:\\android开发空间3\\RefletcTest\\src\\com\\jk\\test\\config"); byte[] buffer = new byte[1024]; int n = -1; while ((n = f.read(buffer)) != -1) { res += new String(buffer, 0, n); } // 生成配置信息里面的类对象 Class classType = Class.forName("com.jk.test." + res); // 生成类对象实例 Animal myAnimal = (Animal) classType.newInstance(); myAnimal.speak(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class Animal { void speak() { ; } } class Cat extends Animal { @Override void speak() { System.out.println("喵...."); } } class Dog extends Animal { @Override void speak() { System.out.println("汪...."); } }
这里的config就是我们需要输入的一些信息
相关文章推荐
- Java之基于S2SH与手机数据交互(二)
- Spring4实战学习笔记
- java中的进程和线程
- Azure File服务(5): Java开发
- (转)MyEclipse代码提示快捷键和常用设置
- 有关多线程中this.getName()和Thread.currentThread().getName()返回名字不一样的问题
- java中的IO流
- Java 8简明教程
- HandlerInterceptorAdapter
- Java中的list集合
- java设计模式之单例
- 使用wget从oralce官网下载JDK
- java Date获取 年月日时分秒
- 解决Myeclipse通过svn导入项目后,项目直接报错问题
- Java线程:概念与原理
- Spring依赖注入:注解注入总结
- Spring+SpringMVC+MyBaties问题总结(三)
- SpringMVC MyBatis 集成 HelloWorld
- spring boot 下 500 404 错误页面处理
- spring boot 下 500 404 错误页面处理