相关疑难解决方法(0)

如何在Java中复制对象?

请考虑以下代码:

DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'

DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'

dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'
Run Code Online (Sandbox Code Playgroud)

所以,我想复制dumdumtwo并更改dum而不影响dumtwo.但上面的代码并没有这样做.当我改变某些内容时dum,也会发生同样的变化dumtwo.

我想,当我说dumtwo = dum,Java 复制引用.那么,有没有办法创建一个新的副本dum并分配给它dumtwo

java clone copy object

763
推荐指数
18
解决办法
109万
查看次数

DTO模式:在两个对象之间复制属性的最佳方式

在我的应用程序架构中,我通常通过服务层将对象或对象列表从数据访问层发送到Web层,其中这些对象从DAO对象转换为DTO对象,反之亦然.Web层对DAO对象没有任何访问权限,DAO层不使用DTO.

为了演示,我通常将代码编写为:

@Transactional(readOnly = true)
public List<UserDTO> getAllUserAsUserDTO() {
    List<UserDTO> userDTOs = new ArrayList<UserDTO>();

    for(User user : getAllUser()) {
        userDTOs.add(constructUserDTO(user));
    }

    return userDTOs;
}

private UserDTO constructUserDTO(User user) {
    UserDTO userDTO = new UserDTO();
    userDTO.setFullName(user.getFullName());
    userDTO.setId(user.getId());
    userDTO.setUsername(user.getUsername());
    userDTO.setRole(user.getRole());
    userDTO.setActive(user.isActive());
    userDTO.setActiveText(user.isActive() ? "Active" : "Inactive");
    return userDTO;
}
Run Code Online (Sandbox Code Playgroud)

这里用户是数据库实体:

@javax.persistence.Entity
@Table(name = "USER")
public class User extends Entity {

    @Transient
    private static final long serialVersionUID = -112950002831333869L;

    private String username;
    private String fullName;
    private boolean active;
    private …
Run Code Online (Sandbox Code Playgroud)

java object lambdaj

45
推荐指数
3
解决办法
10万
查看次数

如何将属性从bean复制到不同类中的另一个bean?

我有两个具有相同属性名称的java类.如何将所有属性复制到另一个填充了data的bean.我不想使用传统的表单来复制属性,因为我有很多属性.

提前致谢.

1班

@ManagedBean
@SessionScoped
public class UserManagedBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private String userSessionId;
    private String userId;
    private String name;
    private String adress;
    ......................
Run Code Online (Sandbox Code Playgroud)

2级

public class UserBean {

    private String userSessionId;
    private String userId;
    private String name;
   ....................
Run Code Online (Sandbox Code Playgroud)

java javabeans

25
推荐指数
2
解决办法
7万
查看次数

复制java中类似类之间的字段

我有一对类,其中一个的字段是另一个字段的子集,超集类的getter都是可预测的名字(getFoo()).有没有办法有效地将所有公共字段从超集类复制到子集类,或者至少自动生成代码来执行此操作.

我应该注意到:

  • 由于各种原因,我无法编辑超集类,也无法在整个过程中使用它们以避免必须进行数据复制.
  • 我可以在子集类中创建新方法,但我不能更改它们的字段.
  • 我们有很多这样的对,有些类有很多字段,所以手工做这件事至少可以说是笨拙的.
  • 一位同事提出了一种创建泛型复制方法的方法,该方法使用java反射来获取任意两个类,以字符串形式迭代,执行字符串操作以确定getter名称,然后执行它以自动设置字段子集类.这很糟糕,但似乎有效.我真的希望有更好的方法.

编辑:一些简单的代码请求

public class SuperClass {
  private int foo;
  private int bar;
  private float bat;
  public int getFoo() { return foo; }
  public int getBar() { return bar; }
  public float getBat() { return bat; }
}

public class SubClass {
  private int foo;
  private float bat;
}

//wanted
public static copySuperFieldsToSubMethod(Object super, Object sub) { ??? }

// also acceptable would be some way to autogenerate all the assignment 
// …
Run Code Online (Sandbox Code Playgroud)

java

12
推荐指数
1
解决办法
9922
查看次数

将一个类的字段复制到另一个类的相同字段中

我有这个问题.但是我很难解释,因为我不知道使用的确切术语.希望有人能理解.我会试着尽力而为.我觉得这与此有很大关系parsing

说有两个班.在这两个类中我都有一些变量,比如字符串(只是为了简单起见,变量类型可以是任何变量),它们具有相似的名称.

Eg:
    class ClassA{
        String x,y,z;
    }

    class ClassB{
        String x,y,z;
    }
Run Code Online (Sandbox Code Playgroud)

现在,我需要的是,我需要将一个类的变量值的值复制到其他类对应的变量.

Eg:
    ClassA aa=new ClassA();
    ClassB bb=new ClassB();
    //set bb's variables
    aa.x=bb.x;
    aa.y=bb.y;
    aa.z=bb.z;
Run Code Online (Sandbox Code Playgroud)

像那样.

但请注意,我需要的不是上述方法.我希望有一种方法可以编写一个简单的方法,以便它通过传递给它的名称来识别相关变量.然后它会相应地进行值赋值.

我想象的方法是这样的,

void assign(String val){        
    // aa.<val>=val
}
Run Code Online (Sandbox Code Playgroud)

例如,如果您传递bb.xassign(...)方法,那么它将进行aa.x=bb.x分配.

希望这很清楚.必须有更好的方法来解释这一点.如果有人知道,请编辑帖子(+标题)以使其更清晰(但保存我的想法)..

如果有办法实现这一点,请告诉我.

谢谢!

java parsing javabeans dozer

9
推荐指数
3
解决办法
2万
查看次数

将pojo字段复制到另一个pojo的setter

比方说,我有一流的A公共领域xy.让我们说我有另一个pojo类,B但它使用setter和getter,所以它有setX()和setY().

我想使用一些自动方式从实例复制AB后端.

至少使用默认设置,Dozer's

   Mapper mapper = new DozerBeanMapper();
   B b = mapper.map(a, B.class);
Run Code Online (Sandbox Code Playgroud)

不会正确复制字段.

那么是否有一个简单的配置更改,允许我使用Dozer或其他库来完成上述操作?

java pojo dozer

7
推荐指数
1
解决办法
5205
查看次数

标签 统计

java ×6

dozer ×2

javabeans ×2

object ×2

clone ×1

copy ×1

lambdaj ×1

parsing ×1

pojo ×1