怎么把类属性的值全部复制到另外一个类里面.

lirong800 2008-03-07 03:46:24
有2个类,没有任何关系,我现在一个类里面的属性都得到值了,我怎么样把这里面所有的值放到另外一个类对应的属性上.
比如
Sp sp =loginService.checkLogin_Sp(loginBean.getCspname());通过查询得到sp对象
我现在有个KF类,我想把sp里面的东西放到KF类里面,因为我这里面除了放SP类里面的东西以外,我还要放其他类里面的东西.然后封装发出去.
我也知道可以通过
KF kf=new KF();
kf.set(sp.get())的方法来设置,不过里面的属性太多了.有没有更方便的方法呢?
...全文
434 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lirong800 2008-03-09
  • 打赏
  • 举报
回复
谢谢各位
logi22 2008-03-07
  • 打赏
  • 举报
回复
mark
forestking_xx 2008-03-07
  • 打赏
  • 举报
回复
如果符合javaBean 命名规范的话,我觉得可以使用反射,比如
public class ReflectionTest {

/**
* @param args
*/
public static void main(String[] args) {
A a = new A();
a.setName("xxx");
a.setTitle("UUU");
Class clazzA = a.getClass();

Field[] fields = clazzA.getDeclaredFields();

B b = new B();



Method[] methodsOfA = a.getClass().getDeclaredMethods();

Method[] methodsOfB = b.getClass().getDeclaredMethods();

for(Method methodOfA : methodsOfA) {
if(methodOfA.getName().startsWith("get")) {
try{
Object value = methodOfA.invoke(a);
if(value != null) {
for(Method methodOfB : methodsOfB) {
String methodName = methodOfB.getName().toLowerCase();
String methodNameOfA = methodOfA.getName().toLowerCase();
String fieldName = methodNameOfA.substring(methodNameOfA.indexOf("get") + 3);
if(methodName.startsWith("set") && methodName.contains(fieldName)) {

try{
methodOfB.invoke(b, value);
break;
} catch(Exception e) {
//ignore.
}
}
}
}
} catch(Exception e) {
//ignore.
}
}
}

System.out.println("name " + b.getName());
System.out.println("title " + b.getTitle());
}

}

class A {
public String name;

private String title;
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}


}

class B {
public String name;

private String title;
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}


}
hmsuccess 2008-03-07
  • 打赏
  • 举报
回复
同意4楼的,但是对反射应用还是不熟,请教之
dayanhn 2008-03-07
  • 打赏
  • 举报
回复 1
引用apache的commons-beanutils.jar包
使用如下代码:
BeanUtils.copyProperties(kf, sp)
老紫竹 2008-03-07
  • 打赏
  • 举报
回复
一个一个的get 然后 set,如果属性名和方法名相同,可以用反射来做!

nihuajie05 2008-03-07
  • 打赏
  • 举报
回复
好象都是自己手动赋值的吧
难道有自动的方法嘛?注意"嘛"是重音哦
EdmundBull 2008-03-07
  • 打赏
  • 举报
回复
sorry,看错了
clone不行
EdmundBull 2008-03-07
  • 打赏
  • 举报
回复
clone()方法

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧