从javabean中提取get和set方法。
在“任意”一个javabean中提取出其中所有的get和set方法,然后在另外的一个类中使用:org.setId(row.getId());org.setProtocol...
在“任意”一个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理解有限,表达不是很好,请各位帮忙。) 展开
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理解有限,表达不是很好,请各位帮忙。) 展开
2个回答
展开全部
你可以看下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);
}
}
}
}
简单写了下:
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);
}
}
}
}
展开全部
你的意思是,随便给一个类名,然后能在其他类里调用它的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文件里
这里需要注意的是,因为是通过反射,你最好清楚你要调用方法的名称,如果不清楚你是无法调用的
另,若你需要反射的类在缺省包里,那么注意了,只有在缺省包里才能通过反射找到他。否则你只能给他一个包
以上是反射的一个实例,通过反射你可以映射出一个完整的类。反射极其重要,建议你系统的学习下,不难,但是很重要!
希望对你又帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询