反射应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static void main(String[] args) throws Exception {
Class clazz = Person.class;

//对Person公有的构造器访问
Constructor constructor = clazz.getConstructor(String.class, Integer.class);
Person person = (Person) constructor.newInstance("刘富贵aa", 66);
System.out.println(person.toString());

//对Person对象私有的属性访问
Field age = clazz.getDeclaredField("age");
age.setAccessible(true);//设置无障碍模式,也就是可以访问私有的对象
age.set(person, 16);
System.out.println(person.toString());

//对Person对象私有的构造器的调用
Constructor constructor2 = clazz.getDeclaredConstructor(String.class);//调用构建名称的构造器
constructor2.setAccessible(true);//设置无障碍模式,也就是可以访问私有的对象
person = (Person) constructor2.newInstance("sky");
System.out.println(person.toString());

//对Person对象公有的方法的调用
Method method = clazz.getDeclaredMethod("sayHello", String.class);
method.invoke(person, "张大炮");

//对Person对象的私有方法的调用
Method method2 = clazz.getDeclaredMethod("makeFriend", String.class);
method2.setAccessible(true);//设置无障碍模式,也就是可以访问私有的对象
method2.invoke(person, "李二牛");

Method friendName = clazz.getDeclaredMethod("friendName");
friendName.setAccessible(true);
System.out.println(friendName.invoke(person));
}

文件的读取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public static void main(String[] args) {
Properties properties = new Properties();
try {
// ClassLoader classLoader = LoaderTest.class.getClassLoader();
// InputStream resourceAsStream = classLoader.getResourceAsStream("jdbc1.properties");
FileInputStream resourceAsStream = new FileInputStream("src\\jdbc1.properties");
properties.load(resourceAsStream);
System.out.println(properties.getProperty("user") + "\\t" + properties.getProperty("password"));
} catch (Exception e) {
e.printStackTrace();
}

}