码迷,mamicode.com
首页 > 编程语言 > 详细

java反射机制基础

时间:2019-10-29 23:37:23      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:extend   put   加载   功能   自己   文件中   stream   学习   不同   

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协议请求,更具不同的请求,执行不同的方法响应给浏览器。

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

java反射机制基础

标签:extend   put   加载   功能   自己   文件中   stream   学习   不同   

原文地址:https://www.cnblogs.com/hpqbh/p/11762185.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!