首先自定义三个类
package reflection1; public interface MtInterface { void info(); }
package reflection1; import java.io.Serializable; public class Creature<T> implements Serializable { private char gender; public double weight; private void breath() { System.out.println("呼吸"); } public void eat() { System.out.println("吃饭"); } }
package reflection1; public class Person extends Creature<String> implements Comparable<String>,MtInterface { private String name; int age; public int id; public Person() { super(); } private Person(String name) { super(); this.name = name; } Person(String name, int age) { super(); this.name = name; this.age = age; } public Person(String name, int age, int id) { super(); this.name = name; this.age = age; this.id = id; } private String show(String nation) { System.out.println("nation="+nation); return nation; } public String display(String interests) { return interests; } @Override public void info() { System.out.println("我是人"); } @Override public int compareTo(String o) { return 0; } private static void showDesc() { System.out.println("i am zsben"); } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", >; } }
然后通过反射获取类属性结构
package reflection2; import java.lang.module.ModuleDescriptor.Exports.Modifier; import java.lang.reflect.Field; import org.junit.jupiter.api.Test; import reflection1.*; /* * 获取当前运行时类的属性结构 * */ public class FieldTest { @Test public void test1() { Class clazz = Person.class; //获取属性结构 //getFields():获取当前运行时类及其父类中所有public的属性 Field [] fields = clazz.getFields(); for(Field f:fields) System.out.println(f); System.out.println(""); //getDeclaredFields():获得当前运行时类的所有属性,不包含父类的属性,不考虑权限 fields = clazz.getDeclaredFields(); for(Field f:fields) System.out.println(f); System.out.println(""); } //权限修饰符:数据类型 变量名 @Test public void test2() { Class clazz = Person.class; Field [] fields = clazz.getDeclaredFields(); for(Field f:fields) { System.out.println(f); //1.权限修饰符 int modifiers = f.getModifiers(); System.out.println(modifiers); //2.数据类型 Class type = f.getType(); System.out.println(type); //3.变量名 String name = f.getName(); System.out.println(name); System.out.println(""); } } }