从javabean中提取get和set方法。

在“任意”一个javabean中提取出其中所有的get和set方法,然后在另外的一个类中使用:
org.setId(row.getId());
org.setProtocol(row.getProtocol());
org.setHostIp(row.getHostIp());
org.setPort(row.getPort());
org.setBaseUrl(row.getBaseUrl());
org.setUser(row.getUser());
org.setPassword(row.getPassword());
org.setEncrypt(row.getEncrypt());



一个通用的方法,把任意的get和set变成如上的格式。
(对java理解有限,表达不是很好,请各位帮忙。)

你可以看下java反射机制,可以解决你的问题。
简单写了下:

import java.lang.reflect.Method;

public class Demo {
private String id;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Demo demo = new Demo();
Method[] methods = Demo.class.getMethods();// 类的方法
for (Method method : methods) {
String methodName = method.getName();
// System.out.println("方法名:" + methodName);
if (methodName.startsWith("set")) {// 如果方法名以set开头
method.invoke(demo, "测试值");// 调用方法
}
}
for (Method method : methods) {
String methodName = method.getName();
// System.out.println("方法名:" + methodName);
if (methodName.startsWith("get") && !methodName.equals("getClass")) {// 如果方法名以get开头
Object value = method.invoke(demo);// 调用方法,并打印返回值
System.out.println(value);
}
}
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-02
你的意思是,随便给一个类名,然后能在其他类里调用它的get set方法么?
如果是的话请追问,不是的话请解释。我理解能力有限...追问

是的。刚接触java

追答

你说的其实就是反射

测试类:
class exp{
private String str;

private int in;

public int getIn() {
return in;
}

public void setIn(int in) {
this.in = in;
}

public String getStr() {
return str;
}

public void setStr(String str) {
this.str = str;
}
}

main:
try {
Class cls = Class.forName("exp");
Object obj = cls.newInstance();
List list = Arrays.asList(cls.getDeclaredMethods());
List name = new ArrayList();
//显示所有声明的方法
for (Method method : list) {
System.out.println(method.getName());
name.add(method.getName());
}
//通过方法名调用方法 setIn
list.get(name.indexOf("setIn")).invoke(obj, 123);
//测试赋值
System.out.println(list.get(name.indexOf("getIn")).invoke(obj));

} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
以上两个类你可以放在一个.java文件里

这里需要注意的是,因为是通过反射,你最好清楚你要调用方法的名称,如果不清楚你是无法调用的
另,若你需要反射的类在缺省包里,那么注意了,只有在缺省包里才能通过反射找到他。否则你只能给他一个包
以上是反射的一个实例,通过反射你可以映射出一个完整的类。反射极其重要,建议你系统的学习下,不难,但是很重要!

希望对你又帮助

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网