package ClassTest;
/*
* 创建一个类,两个构造器。一个带参。一个无参,三个属性
* 测试反射,调用反射创建类实例
*/
public class UserPo {
private int id;
private String name;
private String pw;
/*无参构造器*/
public UserPo() {
super();
}
/*有参构造器*/
public UserPo(int id, String name, String pw) {
super();
this.id = id;
this.name = name;
this.pw = pw;
}
/*封装属性*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
}
public class UserPoTest {
public static void main(String[] args) {
/* 获取UserPo的类对象的Class对象 */
Class<?> userPoClass = null;
try {
/**
* 实例化对象演示
*/
userPoClass = Class.forName("ClassTest.UserPo");
/* 调用Class类的方法newInstance实例化对象,类型转换 */
UserPo uerPo = (UserPo) userPoClass.newInstance();
/* 调用class对象获取构造器对象,调用构造器对象newInstance实例化对象 */
Constructor<?> userPoconstructor = userPoClass.getConstructor(int.class, String.class, String.class);
/* 调用构造器对象创建实例 */
UserPo uerPoConstructorClass = (UserPo) userPoconstructor.newInstance(12, "name", "id");
/* 调用构造器返回类的修饰符 */
String string = Modifier.toString(userPoconstructor.getModifiers());
/**
* Method类demo,
* 方法:getModifiers(),返回方法的修饰符代表数字,调用Modifier类的toString类,
* 方法:getReturnType(),返回方法返回值的Class对象
* 方法:getName(),返回方法的名字String类型
* 方法:getParameterTypers(),返回方法参数列表的Class数组
* 方法:invoke(),调用方法,返回Object类
*/
/*获取指定方法*/
Method methodset = userPoClass.getMethod("setPw",String.class);
/*获取类UserPo的所有方法*/
Method[] method = userPoClass.getDeclaredMethods();
for(Method e :method){
/*获取方法的修饰符*/
int eModifier = e.getModifiers();
String modifier = Modifier.toString(eModifier);
System.out.print(modifier);
/*获取方法的返回值*/
Class<?> re = e.getReturnType();
System.out.print("\t"+re.getSimpleName());
/*获取方法名*/
String name = e.getName();
System.out.print("\t" + name);
/*获取方法的参数列表*/
Class<?>[] arg = e.getParameterTypes();
//System.out.println(arg.length);
System.out.print("(");
for(Class<?> k : arg){
System.out.print(k.getSimpleName()+ " args");
}
System.out.print("){}");
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
反射之Method类
猜你喜欢
转载自blog.csdn.net/coco_love24/article/details/80699126
今日推荐
周排行