首先是定义下面的两个类:
1、UserInfo.java:
- package org.ml.fs;
- public class UserInfo {
- private Integer id;
- private String username;
- private String passward;
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassward() {
- return passward;
- }
- public void setPassward(String passward) {
- this.passward = passward;
- }
- }
2、GetClassTest.java:
- package org.ml.fs;
- public class GetClassTest {
- public boolean checkClass() {
- try {
- System.out.println("第一种方式,通过类本身来获取自身('GetClassTest')的对象");
- Class<?> UserClass = this.getClass(); // (return Class)
- System.out.println(UserClass);
- System.out.println("第一种方式操作成功!\n");
- System.out.println("第二种方式,通过子类的实例获取父类('Object')的对象");
- UserInfo ui = new UserInfo();
- UserClass = ui.getClass();
- Class<?> SubUserClass = UserClass.getSuperclass();
- System.out.println(SubUserClass);
- System.out.println("第二种方式操作成功!\n");
- System.out.println("第三种方式,通过类名加.Class获取('UserInfo')对象");
- Class<UserInfo> ForClass = org.ml.fs.UserInfo.class;
- System.out.println(ForClass);
- System.out.println("第三种方式操作成功!\n");
- System.out.println("第四种方式,通过类名的字符串获取('UserInfo')对象");
- Class<?> ForName = Class.forName("org.ml.fs.UserInfo");
- System.out.println(ForName);
- System.out.println("第四种方式操作成功!\n");
- } catch (ClassNotFoundException e) {
- System.out.println("出现" + e.getMessage() + "异常");
- return false;
- }
- return true;
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- GetClassTest gct = new GetClassTest();
- if (gct.checkClass()) {
- System.out.println("反射初始化对象全部成功!");
- } else {
- System.out.println("反射初始化对象出现错误!");
- }
- }
- }
运行结果:
以上的代码实现了反射机制获取对象的四种方法。
转载于:https://blog.51cto.com/2838221/827564