Làm cách nào để sao chép một đối tượng trong Java

Lam Cach Nao De Sao Chep Mot Doi Tuong Trong Java



Trong Java, việc sao chép một đối tượng có hiệu lực khi có nhu cầu sử dụng các chức năng đã được triển khai trong mã thay vì áp dụng lại chúng từ đầu. Ngoài ra, nó rất hữu ích khi cập nhật dữ liệu dựa trên các bản ghi chứa trong đó. Bằng cách này, nó làm giảm độ phức tạp của mã và sử dụng tài nguyên một cách hiệu quả.

Bài viết này sẽ trình bày các cách tiếp cận để sao chép một đối tượng trong Java.

Làm cách nào để sao chép một đối tượng trong Java?

Một đối tượng có thể được sao chép trong Java bằng cách sử dụng các phương pháp sau:







Truy cập tất cả các lớp trong “ java.util ” gói trước khi chuyển sang các ví dụ:



nhập khẩu java. sử dụng . *;

Cách tiếp cận 1: Sao chép một đối tượng trong Java bằng “Copy Constructor”

Các ' Sao chép công cụ xây dựng ” tạo/định nghĩa một đối tượng bằng cách tham chiếu đến cùng một đối tượng lớp đã tạo trước đó.



Ví dụ
Ví dụ sau áp dụng “Copy Constructor” để sao chép một đối tượng:





công cộng lớp học Sao chép đối tượng {
int nhận dạng ;
Sợi dây thành phố ;
Sao chép đối tượng ( int nhận dạng , Sợi dây thành phố ) {
cái này . nhận dạng = nhận dạng ;
cái này . thành phố = thành phố ; }
Sao chép đối tượng ( đối tượng CopyObject ) {
cái này . nhận dạng = sự vật. nhận dạng ;
cái này . thành phố = sự vật. thành phố ; }
công cộng khoảng trống trưng bày ( ) {
Hệ thống. ngoài . bản in ( 'ID ->' + cái này . nhận dạng ) ;
Hệ thống. ngoài . bản in ( 'Thành phố ->' + cái này . thành phố ) ; }
công cộng tĩnh khoảng trống chủ yếu ( Sợi dây [ ] tranh luận ) {
Đầu vào máy quét = mới Máy quét ( Hệ thống. TRONG ) ;
Hệ thống. ngoài . bản in ( 'Nhập id:' ) ;
int nhận dạng = đầu vào. tiếp theoInt ( ) ;
Hệ thống. ngoài . bản in ( 'Vào thành: ' ) ;
Sợi dây thành phố = đầu vào. Kế tiếp ( ) ;
đối tượng CopyObject1 = mới Sao chép đối tượng ( nhận dạng , thành phố ) ;
CopyObject đối tượng2 = mới Sao chép đối tượng ( đối tượng1 ) ;
Hệ thống. ngoài . bản in ( 'Đối tượng mặc định ->' ) ;
đối tượng1. trưng bày ( ) ;
Hệ thống. ngoài . bản in ( 'Đối tượng được sao chép ->' ) ;
đối tượng2. trưng bày ( ) ;
đầu vào. đóng ( ) ;
} }

Trong đoạn mã trên:

  • Tạo một lớp có tên là “ Sao chép đối tượng ”.
  • Chỉ định các biến thành viên đã nêu của lớp.
  • Sau đó, tạo một hàm tạo lớp được tham số hóa để phân bổ các giá trị được truyền cho các biến đã chỉ định thông qua “ cái này ”.
  • Bây giờ, hãy tạo một “ Sao chép công cụ xây dựng ” lấy một đối tượng loại lớp đã được tạo làm tham số của nó sẽ được truyền dưới dạng đối số sau này.
  • Ngoài ra, hãy xác định hàm “ trưng bày() ” hiển thị các giá trị đối tượng đã truyền.
  • Bên trong ' chủ yếu() ”, hãy tạo một đối tượng “Scanner” để cho phép người dùng nhập thông qua “ Hệ thống.in ' tham số.
  • Ngoài ra, hãy liên kết “ nextInt() ' Và ' Kế tiếp() ” để lấy đầu vào của người dùng số nguyên và chuỗi tương ứng.
  • Tạo một đối tượng lớp thông qua “ mới ” từ khóa và “ CopyObject() ” hàm tạo có các giá trị đầu vào của người dùng làm đối số của nó.
  • Ngoài ra, hãy tạo một đối tượng sao chép có đối tượng đã tạo làm đối số của nó để trả về nội dung đã sao chép bằng cách tham chiếu đến hàm tạo bản sao của lớp.
  • Cuối cùng, hãy gọi “ trưng bày() ” để hiển thị các giá trị đầu vào của người dùng đã chuyển và đóng “Máy quét”.

đầu ra



Trong kết quả này, có thể ngụ ý rằng một đối tượng sao chép được tạo và hiển thị tương ứng.

Cách tiếp cận 2: Sao chép một đối tượng trong Java thông qua phương thức “clone()”

Các ' dòng vô tính() ” phương pháp của “ java.lang.Object ” lớp lấy một đối tượng làm tham số, tạo và đưa ra một bản sao của nó. Phương thức này có thể được triển khai để sao chép một đối tượng bằng cách tham chiếu đến đối tượng đã được tạo (cần được sao chép) và phương thức “clone()”.

cú pháp

sự vật. dòng vô tính ( )

Phương thức này cung cấp một bản sao của đối tượng và ném “ CloneNotSupportedException ” nếu lớp của đối tượng không triển khai/áp dụng giao diện “Có thể sao chép”.

Ví dụ
Đi qua các dòng mã dưới đây:

công cộng lớp học Sao chép đối tượng dụng cụ có thể sao chép {
int nhận dạng ;
Sợi dây thành phố ;
Sao chép đối tượng ( int nhận dạng , Sợi dây thành phố ) {
cái này . nhận dạng = nhận dạng ;
cái này . thành phố = thành phố ;
}
công cộng khoảng trống trưng bày ( ) {
Hệ thống. ngoài . bản in ( 'ID ->' + cái này . nhận dạng ) ;
Hệ thống. ngoài . bản in ( 'Thành phố ->' + cái này . thành phố ) ;
}
công cộng tĩnh khoảng trống chủ yếu ( Sợi dây [ ] tranh luận ) ném CloneNotSupportedException {
Đầu vào máy quét = mới Máy quét ( Hệ thống. TRONG ) ;
Hệ thống. ngoài . bản in ( 'Nhập id:' ) ;
int nhận dạng = đầu vào. tiếp theoInt ( ) ;
Hệ thống. ngoài . bản in ( 'Vào thành: ' ) ;
Sợi dây thành phố = đầu vào. Kế tiếp ( ) ;
đối tượng CopyObject1 = mới Sao chép đối tượng ( nhận dạng , thành phố ) ;
Hệ thống. ngoài . bản in ( 'Đối tượng mặc định ->' ) ;
đối tượng1. trưng bày ( ) ;
Hệ thống. ngoài . bản in ( 'Đối tượng được sao chép ->' ) ;
CopyObject đối tượng2 = ( Sao chép đối tượng ) đối tượng1. dòng vô tính ( ) ;
đối tượng2. trưng bày ( ) ;
đầu vào. đóng ( ) ;
} }

Theo khối mã trên, hãy thực hiện các bước được nêu dưới đây:

  • Nhớ lại các cách tiếp cận đã thảo luận để xác định một lớp, chỉ định các biến thành viên, tạo một hàm tạo lớp được tham số hóa (phân bổ các giá trị được truyền) và xác định một hàm để hiển thị các giá trị tương ứng.
  • Bây giờ, trong “ chủ yếu() ”, tương tự, người dùng nhập các giá trị và truyền các giá trị này cho đối tượng lớp đã tạo và hiển thị chúng qua hàm tương ứng.
  • Sau đó, “ dòng vô tính() ” phương thức có hiệu lực được liên kết với đối tượng đã được tạo để tạo đối tượng sao chép.
  • Cuối cùng, cũng hiển thị nội dung đối tượng được sao chép thông qua chức năng đã thảo luận.

đầu ra

Trong kết quả này, có thể quan sát thấy rằng các giá trị đầu vào của người dùng được trả về hai lần với các kết quả giống hệt nhau, đảm bảo rằng đối tượng lớp được sao chép một cách thích hợp.

Phần kết luận

Một đối tượng có thể được sao chép trong Java bằng cách sử dụng “ Sao chép công cụ xây dựng ', hoặc là ' dòng vô tính() ' phương pháp. Cách tiếp cận trước sao chép đối tượng bằng cách lấy đối tượng đã được tạo làm đối số hàm tạo bản sao. Cách tiếp cận thứ hai được liên kết trực tiếp với đối tượng lớp đã tạo. Bài viết này trình bày các cách tiếp cận để sao chép một đối tượng trong Java.