反射字段及属性的存储和加载

反射字段

  • public公共字段
package bull05.Field;
/*
 * public公共字段
 */
import java.lang.reflect.Field;

import org.junit.Test;

public class PublicField {
    @Test
    public void fieldMethod() throws Exception   {
        //获取实例对象
        Class clazz = Class.forName("bull04.Method.Bean");
        Object obj = clazz.newInstance();

        //给字段赋值
        Field field = clazz.getField("sex");
        field.set(obj, "男性");

        //获取字段值
        String sex = (String) field.get(obj);

        System.out.println(sex);
    }
}
  • private私有字段
package bull05.Field;

import java.lang.reflect.Field;

import org.junit.Test;

/*
 * private私有字段
 */
public class PrivateField {
    @Test
    public void privateField() throws Exception {
        //1.获取实例
        Class clazz = Class.forName("bull04.Method.Bean");
        Object obj = clazz.newInstance();

        //2.给字段赋值
        Field field = clazz.getDeclaredField("name");

        //2.1设置运行访问私有(暴力)
        field.setAccessible(true);
        //2.2先暴力再赋值
        field.set(obj, "张三");

        //3.获取字段值
        String name = (String) field.get(obj);
        System.out.println(name);
    }
}

Properties

这里写图片描述
- Properties的运用

package bull06.Properties;

import java.util.Properties;
import java.util.Set;

import org.junit.Test;

/*
 * Properties
 */
public class PropertiesDemo_01 {
    @Test
    public void properties() {
        //创建properties对象
        Properties prop = new Properties();
        /*
         * 设置数据
         * setProperty();
         */
        prop.setProperty("k1", "v1");
        prop.setProperty("k2", "v2");
        prop.setProperty("k3", "v3");

        /*
         * 获取指定数据
         * getProperty();
         */
        String str = prop.getProperty("k1");
        System.out.println(str);
        System.out.println("-----------");

        /*
         * 获取所有数据
         * stringPropertyNames();
         */
        Set<String> keys = prop.stringPropertyNames();
        for (String key : keys) {
            String value = prop.getProperty(key);
            System.out.println(key + ":" + value);
        }
    }
}
  • 将内容写入文件和读出
package bull06.Properties;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Properties;

import org.junit.Test;

/*
 * 将内容写入文件
 */
public class PropertiesDemo_02 {
    @Test
    public void method1() throws Exception {
        //创建对象
        Properties prop = new Properties();
        //设置数据
        prop.setProperty("k1", "v1");
        prop.setProperty("k2", "v2");
        prop.setProperty("k3", "v3");

        //把数据写入文件
        Writer writer = new OutputStreamWriter(new FileOutputStream("prop.txt"),"UTF-8");
        prop.store(writer, "this is file-introduce");
        writer.close();

        //采用BufferedWriter方式
//      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("prop1.txt"),"UTF-8"));
//      prop.store(bw, "描述");
//      bw.close();
    }

    @Test
    public void method2() throws Exception, FileNotFoundException {
        //创建对象
        Properties prop = new Properties();

        //通过properties对象加载流
        Reader reader = new InputStreamReader(new FileInputStream("prop.txt"),"UTF-8");
        prop.load(reader);
        reader.close();

        //遍历输出到控制台
        for (String name : prop.stringPropertyNames()) {
            String value = prop.getProperty(name);
            System.out.println(name + "@" + value);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/sinat_40662281/article/details/79783807