一、通过反射获取运行时类的完整结构

   Class  类中提供了大量实例方法来获取该 Class 对象所对应类的详细信息, Class 类大致包含如下几种方法,下面每种方法都可能包含多个重载的版本。

    如:包、修饰符、类名、父类、父接口、注解、及成员(属性、构造器、方法)等。

    反射相关的 API 主要是 java.lang.Class 和 java.lang.reflect 包的内容。

  FieldMethodConstructorSuperclassInterfaceAnnotation

实现的全部接口
所继承的父类
全部的构造器
全部的方法
全部的Field

 

 

二、丰富结构的 Person 类

  在这里提供具有丰富结构的 Person类,然后利用反射机制来获取 Person 类的信息。

  (1)Creature<T>  包含泛型的父类

 1 public class Creature<T> implements Serializable {
 2     private char gender;
 3     public double weight;
 4 
 5     private void breath(){
 6         System.out.println("生物呼吸");
 7     }
 8 
 9     public void eat(){
10         System.out.println("生物吃东西");
11     }
12 
13 }

 

 

  (2)MyInterface 自定义接口

1 public interface MyInterface {
2     void info();
3 }

 

 

  (3)MyAnnotation 自定义注解

1 @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
2 @Retention(RetentionPolicy.RUNTIME)
3 public @interface MyAnnotation {
4     String value() default "hello";
5 
6 }

 

 

  (4)Person 类

 1 @MyAnnotation(value="hi")
 2 public class Person extends Creature<String> implements Comparable<String>,MyInterface{
 3 
 4     private String name;
 5     int age;
 6     public int id;
 7 
 8     public Person(){}
 9 
10     @MyAnnotation(value="abc")
11     private Person(String name){
12         this.name = name;
13     }
14 
15      Person(String name,int age){
16         this.name = name;
17         this.age = age;
18     }
19     @MyAnnotation
20     private String show(String nation){
21         System.out.println("我的国籍是:" + nation);
22         return nation;
23     }
24 
25     public String display(String interests,int age) throws NullPointerException,ClassCastException{
26         return interests + age;
27     }
28 
29 
30     @Override
31     public void info() {
32         System.out.println("我是一个人");
33     }
34 
35     @Override
36     public int compareTo(String o) {
37         return 0;
38     }
39 
40     private static void showDesc(){
41         System.out.println("我是一个可爱的人");
42     }
43 
44     @Override
45     public String toString() {
46         return "Person{" +
47                 "name='" + name + '\'' +
48                 ", age=" + age +
49                 ", id=" + id +
50                 '}';
51     }
52 }

 

 

  (5)

 

三、

 

posted on 2021-06-14 14:44  格物致知_Tony  阅读(120)  评论(0编辑  收藏  举报