BeanUtils.copyProperties()方法是Apache Commons BeanUtils庫提供的一個用于將一個JavaBean對象的屬性值復制到另一個JavaBean對象的方法。
該方法的用法如下:
copyProperties(Object dest, Object orig)
其中,dest
表示目標對象,orig
表示源對象。這兩個對象可以是任意JavaBean對象。
該方法會將源對象的屬性值復制到目標對象中對應的屬性上,屬性名和類型必須相同。如果源對象和目標對象的屬性名不一樣,可以通過使用@BeanProperty注解來指定屬性的映射關系。
該方法會自動進行類型轉換,如果源對象的屬性值類型與目標對象的屬性值類型不一致,會進行類型轉換。如果無法進行類型轉換,會拋出異常。
需要注意的是,該方法只會復制兩個對象的可讀屬性,即具有getter方法的屬性。如果兩個對象中存在相同屬性名但只有一個對象有getter方法的情況,該方法不會復制該屬性。
以下是一個使用示例:
public class User {
private String name;
private int age;
// getter and setter methods
}
public class UserDto {
private String name;
private int age;
// getter and setter methods
}
public static void main(String[] args) {
User user = new User();
user.setName("John");
user.setAge(25);
UserDto userDto = new UserDto();
BeanUtils.copyProperties(userDto, user);
System.out.println(userDto.getName()); // Output: John
System.out.println(userDto.getAge()); // Output: 25
}
在上述示例中,我們創建了一個User對象,并為其設置了name和age屬性。然后,我們創建了一個UserDto對象,并使用BeanUtils.copyProperties()方法將User對象的屬性復制到UserDto對象中。最后,我們打印出UserDto對象的屬性值,可以看到屬性值已經成功復制。
需要注意的是,BeanUtils.copyProperties()方法是淺拷貝,即對于屬性值是引用類型的屬性,復制的是引用值而不是新創建的對象。如果需要深拷貝,可以使用其他方法或庫實現。