java反射机制基础

1、首先创建一个抽象父类:

package classes;
public abstract class BasePrint { public abstract void print(); }

2、创建两个打印类继承抽象父类:

package classes;

public class print1 extends BasePrint{
    @Override
    public void print() {
        System.out.println("print1方法执行了");
    }
    
}
package classes;

public class print2 extends BasePrint {
    @Override
    public void print() {
        System.out.println("print2方法执行了");
    }
}

3、在创建一个properties配置文件,文件名为pro.properties

test1=classes.print1
test2=classes.print2

4、利用反射和多态调用打印类中的方法

package classes;

import java.io.FileInputStream;
import java.util.Properties;

public class TestPrint {
    public static void main(String[] args) throws Exception {
        //加载properties配置文件
        Properties pro = new Properties();
        pro.load(new FileInputStream("src/pro.properties"));
        //根据传入的test1键值得到类对象,用多态方式父类指向子类,调用子类方法
        String className = pro.getProperty("test1");
        Class cls = Class.forName(className);
        BasePrint print = (BasePrint) cls.newInstance();
        print.print();
    }
}

测试得到结果

print1方法执行了

结论: 

  利用好java反射和多态机制,可以在不改变代码的情况下,根据键值创建对应的类对象,通过多态方式执行不同类中具有相同功能的代码,当有新的需求时,只需在配置文件中添加对应的全类名即可。

  例如:服务器得到HTTP协议请求,更具不同的请求,执行不同的方法响应给浏览器。

  自己学习总结,希望也能帮到大家,有错误的地方,欢迎指出,一起进步。

posted @ 2019-10-29 22:55  这是只是昵称  阅读(274)  评论(0编辑  收藏  举报