-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGetConstructorDemo.java
More file actions
66 lines (56 loc) · 2.08 KB
/
GetConstructorDemo.java
File metadata and controls
66 lines (56 loc) · 2.08 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com._520it.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
class User {
public User()
{
System.out.println("无参构造器");
}
public User(String name) {
System.out.println("含有name的构造器");
}
private User(String name, int age) {
System.out.println("有参构造器"+name+age);
}
public void doWork(){
System.out.println("doWork方法");
}
}
public class GetConstructorDemo {
public static void main(String[] args) throws Exception {
getOne();
}
public static void getOne() throws Exception {
Class<?> clazz=Person.class;//第一种方式
//Class<?> clazz1=Class.forName("com._520it.reflect.User");//第二种方式
//Class<?> clazz2=(new User().getClass());//第三种方式
System.out.println(clazz);
System.out.println("获取多个构造器");
System.out.println("---------------------------------------------");
Constructor[] con=clazz.getDeclaredConstructors();//getDeclaredConstructors表示的类声明的所有构造方法。
for(Constructor c1:con){
System.out.println(c1);
}
System.out.println("---------------------------------------------");
con=clazz.getConstructors();//表示的类或接口声明的所有方法
for(Constructor c2:con){
System.out.println(c2);
}
System.out.println("---------------------------------------------");
System.out.println("获取单个构造器");
Constructor c3=clazz.getConstructor();
Method method=clazz.getMethod("doWork");
System.out.println(c3.newInstance());
System.out.println(c3);
System.out.println("---------------------------------------------");
c3=clazz.getConstructor(String.class);
System.out.println(c3.newInstance("李华"));
System.out.println(c3);
System.out.println("---------------------------------------------");
c3=clazz.getDeclaredConstructor(String.class,int.class);
c3.setAccessible(true);//使用私有化修饰,通过反射必须先设定可见
System.out.println(c3.newInstance("lihua",36));
System.out.println(c3);
System.out.println("---------------------------------------------");
}
}