先定义一个SUser类,方便以后的测试。代码如下:
package com.wjl.reflect;
public class SUser {
private String userName;
private String passWord;
public SUser(){//无参构造方法
}
public SUser(String userName) {
this.userName = userName;
}
public SUser(String userName, String passWord) {
this.userName = userName;
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "用户名:"+userName+",密码:"+passWord;
}
}
说到反射,首先要说的必然是class类,具体操作说明帮助文档说的很清楚我这里就不赘述了。就说说实例化class的三种方式吧。
package com.wjl.reflect;
//反射:实例化Class类的三种方法
public class GetClassInstanceDemo01 {
public static void main(String[] args) {
//实例化Class类
Class<?> c1 = null;
Class<?> c2 = null;
Class<?> c3 = null;
//1、使用forName(最常见)
try{
c1 = Class.forName("com.wjl.reflect.SUser");//包名+类名
}catch(ClassNotFoundException e){
e.printStackTrace();
}
//2、通过object类中的方法实例化
c2 = new SUser().getClass();
//3、通过类.class
c3 = SUser.class;
System.out.println("类名称1:"+c1.getName());
System.out.println("类名称2:"+c2.getName());
System.out.println("类名称3:"+c3.getName());
}
}