java基础之反射应用

目录

一:配置文件

二:java里面提供了一个配置文件类Properties

1:方法

2:例子


一:配置文件

配置里面的内容基本上都是 键--值 成对成对存在的

二:java里面提供了一个配置文件类Properties

1:方法

public void load(InputStream inStream)从输入字节流读取属性列表(键和元素对)。 

public String getProperty(String key)使用此属性列表中指定的键搜索属性。

2:例子

配置文件

className=day28.Student 
methodName=study

package day34;

public class Student {
    private int age;


    public String sex;
    private String name;

    public Student() {
    }
    private Student(String sex){
        this.sex=sex;

    }

    public Student(int age, String sex) {
        this.age = age;
        this.sex = sex;
    }
    public void show(){
        System.out.println("show");
    }
    private void show(int i){
        System.out.println("show"+"**"+i);
    }
    private void study(){
        System.out.println("study");
    }
    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", sex='" + sex + '\'' +
                ", name='" + name + '\'' +
                '}';
    }


}

 

package day34;

import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Properties;

public class Test5 {
    public static void main(String[] args) throws Exception{
        Properties properties = new Properties();//创建Properties对象
        //获得配置文件输入流
        FileReader fileReader = new FileReader("D:\\code\\bigdata\\src\\day34\\configure");
        properties.load(fileReader);//加载输入流
        //根据key获取value并输出
        String classname = properties.getProperty("classname");
        String methodname = properties.getProperty("methodname");
        System.out.println(classname);
        System.out.println(methodname);
        //根据类名获得class对象
        Class<?> aClass = Class.forName(classname);
        //获得无参构造方法创建对象
        Constructor<?> constructor = aClass.getConstructor();
        Object o = constructor.newInstance();
        System.out.println(o);
        //根据方法名获得方法并执行
        Method declaredMethod = aClass.getDeclaredMethod(methodname);
        declaredMethod.setAccessible(true);//暴力访问
        declaredMethod.invoke(o);
    }
}

 

Guess you like

Origin blog.csdn.net/weixin_50691399/article/details/121277197