2. Class newClass = object.getClass();
3. Field[] field = newClass.getDeclaredFields();
4. Object obj = newClass.newInstance();
5. for (int i = 0; i < field.length; i++) {
6. String methodPrefix = field[i].getName().toString().substring(0, 1).toUpperCase();
7. String methodSuffix = field[i].getName().toString().substring(1);
8. Class[] argList = new Class[1];
9. Method methodGet = newClass.getMethod("get" + methodPrefix + methodSuffix, null);
10. Method methodSet;
……
}
……
}
不明白阿?望指教……
此楼回复Re:
Method 代表类里的方法
Field 代表类里的变量
Class 代表类在运行时的一个映射.
看这段代码像是在写一个自动生成 bean 的代码, 自动生成setter getter方法.
此楼回复Re:
/**
*filtrate函数以一个Object对象做为参数,在函数体内部
*对该Object采用反射机制,在运行态下,来得到该Object
*所定义的字段、以及函数等信息
*/
1.public static Object filtrate(Object object) throws Exception {
2. Class newClass = object.getClass(); //得到对象所对应的Class信息
3. Field[] field = newClass.getDeclaredFields(); //获取该类中所定义的字段信息(字段名)
4. Object obj = newClass.newInstance(); //创建一个该Class所对应的实例即Object
5. for (int i = 0; i < field.length; i++) {
6. String methodPrefix = field[i].getName().toString().substring(0, 1).toUpperCase(); //获取字段名的第一个字符
7. String methodSuffix = field[i].getName().toString().substring(1); //获取字段名除第一个字符外的其他所有字符
8. Class[] argList = new Class[1];
9. Method methodGet = newClass.getMethod("get" + methodPrefix + methodSuffix, null); //在该类中查找与字段所对应的get方法
10. Method methodSet
此楼回复Re:
通用的打印一个类所有属性及其值得方法
public static String toString(Object obj)
{
StringBuffer str=new StringBuffer("");
//得到类
Class c = obj.getClass();
//得到类中定义的属性
Field[] fields = c.getDeclaredFields();
//设置访问权限
AccessibleObject.setAccessible(fields,true);
for(int i=fields.length-1;i>=0;i--)
{
Field f = fields[i];
str.append(" [ ").append(f.getName()).append("=");
try
{
//调用obj.getXXX方法
Object o = f.get(obj);
if(o == null)
{
str.append("null");
}
else
{
str.append(o.toString());
}
}
catch(Exception e)
{
e.printStackTrace();
}
str.append(" ] ,");
}
return str.toString();
}