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 }