四种获取Class对象的方法 Java反射机制

下面以一个具体的实例来说明。此实例来自《精通Hibernate 3.0 Java数据库持久层开发实践》一书。

先在com.hqh.reflect下建一个文件UseInfojava

  
  
  
  
  1. package com.hqh.reflect;  
  2.  
  3. public class UseInfo {  
  4.  
  5. private Integer id;  
  6. private String userName;  
  7. private String password;  
  8.  
  9. public Integer getId() {  
  10. return id;  
  11. }  
  12.  
  13. public void setId(Integer id) {  
  14. this.id = id;  
  15. }  
  16.  
  17. public String getUserName() {  
  18. return userName;  
  19. }  
  20.  
  21. public void setUserName(String userName) {  
  22. this.userName = userName;  
  23. }  
  24.  
  25. public String getPassword() {  
  26. return password;  
  27. }  
  28.  
  29. public void setPassword(String password) {  
  30. this.password = password;  
  31. }  
  32.  
  33. }  
  34.  
  35. package com.hqh.reflect;  
  36.  
  37. public class GetClassTest {  
  38.  
  39. public static void main(String[] args) {  
  40. GetClassTest test = new GetClassTest();  
  41. if(test.ClassCheck())  
  42. System.out.println("OK");  
  43.  
  44. }  
  45.  
  46. public boolean ClassCheck() {  
  47. try {  
  48. System.out.println("通过类本身获得对象");  
  49. Class userClass = this.getClass();  
  50. System.out.println(userClass.getName());  
  51. System.out.println("===========");  
  52.  
  53. System.out.println("通过子类的实例获得父类对象");  
  54. UseInfo useInfo = new UseInfo();  
  55. userClass = useInfo.getClass();  
  56. System.out.println(userClass.getName());  
  57. Class subUserClass = userClass.getSuperclass();  
  58. System.out.println(subUserClass.getName());  
  59. System.out.println("===========");  
  60.  
  61. System.out.println("通过类名.class获取对象");  
  62. Class forClass = com.hqh.reflect.UseInfo.class;  
  63. System.out.println(forClass.getName());  
  64. System.out.println("===========");  
  65.  
  66. System.out.println("通过类名的字符串获取对象");  
  67. Class forName = Class.forName("com.hqh.reflect.UseInfo");  
  68. System.out.println(forName.getName());  
  69. System.out.println("=============");  
  70.  
  71. } catch (Exception e) {  
  72. e.printStackTrace();  
  73. return false;  
  74. }  
  75. return true;  
  76. }  


结果:

通过类本身获得对象
com.hqh.reflect.GetClassTest
===========
通过子类的实例获得父类对象
com.hqh.reflect.UseInfo
java.lang.Object
===========
通过类名.class获取对象
com.hqh.reflect.UseInfo
===========
通过类名的字符串获取对象
com.hqh.reflect.UseInfo
=============
OK

你可能感兴趣的:(java,方法,获取,对象,Class,反射机制)