您的位置:首页 > 编程语言 > Java开发

Java 反射的一些思考

2016-04-02 00:00 351 查看
摘要: 可以通过反射做些什么事情

学了反射以后,感觉反射在解耦上可以做很多事情,比如说类似于spring的解耦,把类字符串放在property文件中,通过工厂模式实例化。进一步的解耦

工具类

public class PropertiesUtil {
public static final Properties prop=new Properties();
private PropertiesUtil(){}
public static Properties getInstance() throws IOException{
prop.load(ClassLoader.getSystemResourceAsStream("test.properties"));
return prop;
}
}

test.properties文件属性

anamial=reflect.Animals
anamial.duck=reflect.Duck
anamial.pet=

主类

public class ReflectThink {
/**
* 关于反射的思考
* 1.能否从property文件中获取类全名,进行反射
* 2.能否通过反射加工厂模式得到我想要的对象
* @throws Exception
*/
public static void main(String[] args) throws Exception {
reflectByProperty();

getInstanceByFactory();
}

/*1.能否从property文件中获取类全名,进行反射*/
public static void reflectByProperty() throws Exception{
Properties prop=PropertiesUtil.getInstance();
Object obj=prop.get("anamial.duck");
//获取duck类全名
Class<?> klass=Class.forName(obj.toString());
Duck duck=(Duck)klass.newInstance();
duck.fly();
}

/*2.能否通过反射加工厂模式得到我想要的对象*/
public static void getInstanceByFactory() throws Exception{
Duck duck=(Duck)ReflectFactory.getInstance("duck");
duck.fly();
Animals animals=(Animals)ReflectFactory.getInstance("animals");
animals.setAge(10);
System.out.println(animals.getAge());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java反射