反射字段
- 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);
}
}
}