JAVAラーニング--反射コンストラクタ操作
16541 ワード
1 @Test
2 public void test1() throws Exception{
3 String className = "com.atguigu.java.Person";
4 Class clazz = Class.forName(className);
5 // 。 newInstance(), 。
6 // :① 。② 。
7 Object obj = clazz.newInstance();
8 Person p = (Person)obj;
9 System.out.println(p);
10 }
1 @Test
2 public void test2() throws ClassNotFoundException{
3 String className = "com.atguigu.java.Person";
4 Class clazz = Class.forName(className);
5
6 Constructor[] cons = clazz.getDeclaredConstructors();
7 for(Constructor c : cons){
8 System.out.println(c);
9 }
10 }
1 // ,
2 @Test
3 public void test3() throws Exception{
4 String className = "com.atguigu.java.Person";
5 Class clazz = Class.forName(className);
6
7 Constructor cons = clazz.getDeclaredConstructor(String.class,int.class);
8 cons.setAccessible(true);
9 Person p = (Person)cons.newInstance(" ",20);
10 System.out.println(p);
11 }
1 class Person extends Creature<String> implements Comparable,MyInterface{
2 public String name;
3 private int age;
4 int id;
5 // , 。
6 public Person() {
7 super();
8 // System.out.println(" ");
9 }
10 public Person(String name) {
11 super();
12 this.name = name;
13 }
14 private Person(String name, int age) {
15 super();
16 this.name = name;
17 this.age = age;
18 }
19 public String getName() {
20 return name;
21 }
22 public void setName(String name) {
23 this.name = name;
24 }
25 public int getAge() {
26 return age;
27 }
28 public void setAge(int age) {
29 this.age = age;
30 }
31
32 public int getId() {
33 return id;
34 }
35 public void setId(int id) {
36 this.id = id;
37 }
38 @MyAnnotation(value = "abc123")
39 public void show(){
40 System.out.println(" !");
41 }
42
43 private Integer display(String nation,Integer i) throws Exception{
44 System.out.println(" :" + nation);
45 return i;
46 }
47 @Override
48 public String toString() {
49 return "Person [name=" + name + ", age=" + age + "]";
50 }
51 @Override
52 public int compareTo(Object o) {
53 // TODO Auto-generated method stub
54 return 0;
55 }
56
57 public static void info(){
58 System.out.println(" !");
59 }
60
61 class Bird{
62
63 }
64
65 }
1 import static java.lang.annotation.ElementType.CONSTRUCTOR;
2 import static java.lang.annotation.ElementType.FIELD;
3 import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
4 import static java.lang.annotation.ElementType.METHOD;
5 import static java.lang.annotation.ElementType.PARAMETER;
6 import static java.lang.annotation.ElementType.TYPE;
7
8 import java.lang.annotation.Retention;
9 import java.lang.annotation.RetentionPolicy;
10 import java.lang.annotation.Target;
11
12 @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
13 @Retention(RetentionPolicy.RUNTIME)
14 public @interface MyAnnotation {
15 String value();
16 }
1 public class Creature<T>{
2 public double weight;
3
4 public void breath(){
5 System.out.println(" !");
6 }
7 }
1 import java.io.Serializable; 2 3 public interface MyInterface extends Serializable{ 4 5 }