首先定義一個urse
1 package com.studay_fanshe; 2 3 public class User { 4 private String uname; 5 private int age; 6 private int id; 7 8 public User() { 9 } 10 11 public User(String uname, int age, int id) { 12 this.uname = uname; 13 this.age = age; 14 this.id = id; 15 } 16 17 public String getUname() { 18 return uname; 19 } 20 public void setUname(){ 21 this.uname="七月"; 22 } 23 public void setUname(String uname) { 24 this.uname = uname; 25 } 26 27 public int getAge() { 28 return age; 29 } 30 31 public void setAge(int age) { 32 this.age = age; 33 } 34 35 public int getId() { 36 return id; 37 } 38 39 public void setId(int id) { 40 this.id = id; 41 } 42 }
1 package com.studay_fanshe; 2 3 import java.lang.reflect.Constructor; 4 import java.lang.reflect.Field; 5 import java.lang.reflect.Method; 6 7 public class test01 { 8 public static void main(String[] args) throws Exception{ 9 10 Class clazz = Class.forName("com.studay_fanshe.User"); 11 //獲取名字 12 String name = clazz.getName();//獲取包名+類名:com.studay_fanshe.User 13 System.out.println(name); 14 String simpleName = clazz.getSimpleName();//獲取類名:User 15 System.out.println(simpleName); 16 //獲取屬性 17 Field[] fields = clazz.getFields();//獲取所有的公共的public修飾的屬性 18 System.out.println(fields.length); 19 Field[] f = clazz.getDeclaredFields();//獲取全部的屬性包括私有的 20 for (Field field : f) { 21 /* private java.lang.String com.studay_fanshe.User.uname 22 private int com.studay_fanshe.User.age 23 private int com.studay_fanshe.User.id*/ 24 System.out.println(field); 25 } 26 //獲取指定屬性名的屬性:private java.lang.String com.studay_fanshe.User.uname 27 Field uname = clazz.getDeclaredField("uname"); 28 System.out.println(uname); 29 //獲取方法 30 Method[] methods = clazz.getMethods();//獲取指定類中所有的方法 31 for (Method method : methods) { 32 System.out.println("所有的方法:"+method); 33 } 34 //獲取指定類中公有的方法 35 Method[] m = clazz.getDeclaredMethods(); 36 for (Method method : m) { 37 System.out.println("public公有的方法"+method); 38 } 39 System.out.println("--------------------------------------------"); 40 /* public void setUname(String uname) { 41 this.uname = uname; 42 }*/ 43 //有參數類型必須傳入參數類型對應的class對象 44 Method setUname = clazz.getDeclaredMethod("setUname", String.class); 45 System.out.println(setUname); 46 /* public void setUname(){ 47 this.uname="七月"; 48 }*/ 49 //沒有參數類型那么參2我們就寫null 50 Method setUname1 = clazz.getDeclaredMethod("setUname", null); 51 System.out.println(setUname1); 52 //獲得構造器 53 Constructor[] dc = clazz.getDeclaredConstructors(); 54 for (Constructor constructor : dc) { 55 System.out.println("構造器:"+constructor); 56 } 57 Constructor dec = clazz.getDeclaredConstructor(String.class, int.class, int.class); 58 System.out.println("指定的構造器:"+dec); 59 } 60 }