1.反射
一種計算機處理方式。是程序可以訪問、檢測和修改它本身狀態或行為的一種能力。
新建一個Person類:
public?class?Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person(){}private Job job; public Job getJob() { return job; } public void setJob(Job job) { this.job = job; } }
2.再建一個測試類:
public class TestUI {public static void main(String[] args) {Class classzz = Person.class;Field[] fields = classzz.getDeclaredFields();for(Field f:fields){Class c = f.getType();if(c.getPackage()!=null){if(c.getPackage().getName().equals("com.Test")){//篩選出Job類System.out.println(c.getPackage().getName());System.out.println("字段的類型:"+c.getName());System.out.println("該字段的名字:"+f.getName());}}}String userInfoSQL = BeanUtil.getSelect(new UserInfo());System.out.println(userInfoSQL);} }
?3.新建一個Job類:
public class Job {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;} }
4.BeanUtil類的內容
public class BeanUtil {public static String getSelect(Object obj){Class classzz = obj.getClass();String TableName = classzz.getSimpleName();StringBuffer sql = new StringBuffer();sql.append("Select * from "+TableName+" ");return sql.toString();} }
?
5.顯示結果:
com.Test
字段的類型:com.Test.Job
該字段的名字:job
Select * from UserInfo//提取出BeanUtil里的sql語句