美文网首页
使用注解获取properties文件内容的小案例

使用注解获取properties文件内容的小案例

作者: 陈柴盐 | 来源:发表于2018-11-26 00:16 被阅读0次
public class Test {
    public static void main(String[] args) throws Exception{
        //Properties继承Map接口
        Properties properties = new Properties();
        properties.load(new InputStreamReader(new FileInputStream("student.properties"),"GBK"));
        //获取Class对象
        Class<Student> studentClass = Student.class;
        //获取构造器创建对象
        Student student = studentClass.getConstructor().newInstance();
        //获取Student类的所有属性
        Field[] declaredFields = studentClass.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            //设置私有属性强制注入
            declaredField.setAccessible(true);
            //根据properties对象根据键名获取键值
            String value = properties.getProperty(declaredField.getName());
        
            //为对象设置值
            if (declaredField.getType() == int.class) {
                declaredField.set(student,Integer.parseInt(value));
            }else if(declaredField.getType() == double.class){
                declaredField.set(student,Double.parseDouble(value));
            }else{
                declaredField.set(student, value);
            }

        }

        System.out.println("修改后的student = " + student);
    }
}

student.properties文件

id=1
name=张景山
age=100

Student类

public class Student {

             private int id;
            private String name;
            private int age;

            public Student(int id, String name, int age) {
                this.id = id;
                this.name = name;
                this.age = age;
            }


            public Student(String name) {
                this.name = name;
            }

            public Student() {
            }

            public int getId() {
                return id;
            }

            public void setId(int id) {
                this.id = id;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }

            public int getAge() {
                return age;
            }

            public void setAge(int age) {
                this.age = age;
            }

            @Override
            public String toString() {
                return "\n" + "Student{" +
                        "id=" + id +
                        ", name='" + name + '\'' +
                        ", age=" + age +
                        '}' + "\n";
            }


            @Override
            public boolean equals(Object o) {
                if (this == o) {return true;}
                if (o == null || getClass() != o.getClass()) {return false;}

                Student student = (Student) o;

                if (id != student.id) {return false;}
                if (age != student.age) {return false;}
                return name != null ? name.equals(student.name) : student.name == null;
            }

            @Override
            public int hashCode() {
                int result = id;
                result = 31 * result + (name != null ? name.hashCode() : 0);
                result = 31 * result + age;
                return result;
            }


            /*方法*/
        public void method1(String string) {
            System.out.println(string);
        }

        public void method2(String string,int i) {
            System.out.println(string+i);
        }

        public void method3(String string,Integer integer,String s) {
            System.out.println(string+integer+s);
        }
}

相关文章

网友评论

      本文标题:使用注解获取properties文件内容的小案例

      本文链接:https://www.haomeiwen.com/subject/fmfvqqtx.html