java的反射机制操作字节文件的便利性(只需要更改配置文件而不用更改代码)

1,反射机制的作用:通过java语言中的反射机制可以操作(读改)字节码文件,也可以操作代码片段(class文件)。
2,在java.lang.reflect包下
3,反射机制有几个比较重要的类,比如Mrthod,Field,Constructor等。
后期的高级框架使用的是反射机制,所以还是很重要的。
反射机制让代码变的灵活,比如将一些属性或者类名放在一个.properties文件里,通过IO流读取,然后只需要写一份创建类对象的代码就可以了,如果以后要更改类对象,直接在.properties文件里更改,而不用再去操作代码。
(1)properties文件
创建了一个类名,可以随时更改
(2)通过这份代码获取类名,再创建对象。

public class ReflectDemo02 {
    public static void main(String[] args) throws IOException{
        //通过IO流读取properties文件
        FileReader fr=new FileReader("G:\\JAVA\\Reflect\\src\\ReflectPackage\\infoClass.properties");
        //创建属性类对象"Map"
        Properties pro=new Properties();
        pro.load(fr);
        fr.close();
        String className = pro.getProperty("className");
        Class c1= null;
        try {
            c1=Class.forName(className);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            Object o = c1.newInstance();
            System.out.println(o);
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        .........
//        System.out.println(className);
//        Class c1 = className.getClass();
//        Class c2=null;
//        try {
//            c2=Class.forName(className);
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }
//        try {
//            Object obj1 = c1.newInstance();
//            Object obj2= c2.newInstance();
//            System.out.println(obj1);
//            System.out.println(obj2);
//        } catch (InstantiationException e) {
//            e.printStackTrace();
//        } catch (IllegalAccessException e) {
//            e.printStackTrace();
//        }

    }
}

(3)输出结果
日期类的输出结果
(4)在properties中更改类名,而不用更改代码
这个Student是自己创建的一个类
(5)再次运行得到结果
使用Student类的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值