package com.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class Test {
private String username;
private String password;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Test() {
super();
}
public Test(String username, String password) {
super();
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;
}
public static void main(String[] args) throws Exception {
// Test t = new Test();
// t.setUsername("2");
// //获得class的完整路径 t.getClass().getDeclaredFields();
// System.out.println("显示为:"+t.getClass().getSimpleName());
//
// Class c = Class.forName("com.test.Test");
// System.out.println(Modifier.toString(c.getModifiers())+c.getSimpleName());
// Class c = Class.forName("com.test.Test");
// Field field = c.getDeclaredField("username");
// field.setAccessible(true);//修改访问权限
// System.out.println(field.getName());
// Test obj = (Test)c.newInstance();
// obj.setUsername("3");
// obj.setPassword("3");
// obj.setAge("2");
// System.out.println(field.get("username"));
Test t = new Test("1","1");
Test t2 = new Test("2","2");
List<Test> list = new ArrayList<Test>();
list.add(t);
list.add(t2);
Iterator<Test> it = list.iterator();
while(it.hasNext()) {
Test test = it.next();
System.out.println("username:"+test.getUsername()+"password:"+test.getPassword());
}
System.out.println("------------------无敌分隔线---------------------");
//利用反射获得javabean属性的先后顺序
Field[] fields = Test.class.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
System.out.print(fields[i].getName()+"\t");
//利用javabean属性获取获得属性的方法名
String fieldname = fields[i].getName();
String getMethodName = "get"+fieldname.substring(0, 1).toUpperCase()+fieldname.substring(1);
System.out.print("获得属性的方法名为:"+getMethodName+"\t");
Method method = Test.class.getMethod(getMethodName, new Class[]{});
System.out.println("这个方法的值为:"+method.invoke(t2));
}
System.out.println("---------------------无敌超级分隔线------------------------");
/*
* 得到类中的方法
*/
Method[] methods = Test.class.getMethods();
for(int i = 0; i < methods.length; i++){
Method method = methods[i];
if(method.getName().startsWith("get")){
System.out.print("methodName:"+method.getName()+"\t");
System.out.println("value:"+method.invoke(t2));//得到get 方法的值
}
}
}
}
java反射机制获得属性值
最新推荐文章于 2025-02-13 10:01:24 发布