Xác định hàm tạo mặc định cho bản ghi


20

Tôi có một bản ghi và muốn thêm constructor mặc định vào nó.

public record Record(int recordId) {
   public Record {

   }
}

Nhưng nó đã tạo constructor với intparam.

public final class Record extends java.lang.Record {
    private final int recordId;
    public Record(int);
    //other method
}

Làm thế nào chúng ta có thể thêm một hàm tạo mặc định vào một bản ghi?


những gì bạn đã xác định là một hàm tạo nhỏ gọn có được khai báo xuất phát từ tiêu đề bản ghi. Có sự trùng khớp 1-1 về tên, loại và mức độ thay đổi giữa thành phần bản ghi và tham số chính thức tương ứng trong hàm tạo nhỏ gọn, áp dụng tương tự cho hàm tạo chính tắc. Một bản ghi chỉ có thể có một hàm tạo chuẩn. Nếu khai báo hàm tạo nhỏ gọn là hàm tạo chính tắc
Vicente Romero

Câu trả lời:


18

Để chia tóc, bạn không bao giờ có thể xác định hàm tạo mặc định, bởi vì hàm tạo mặc định được tạo bởi trình biên dịch khi không có hàm tạo nào được xác định, do đó, bất kỳ hàm tạo nào được xác định không phải là một hàm mặc định.

Nếu bạn muốn một bản ghi có hàm tạo không có đối số, các bản ghi sẽ cho phép thêm các hàm tạo hoặc phương thức nhà máy bổ sung , miễn là "hàm tạo chính tắc" lấy tất cả các trường bản ghi làm đối số được gọi.

public record Record(int recordId) {
   public Record() {
      this(0); 
   }
}

17

Xây dựng rõ ràng

Trong trường hợp của bạn, bạn có thể chỉ định rõ ràng một hàm tạo không có đối số với sự ủy nhiệm cho hàm tạo chính tắc với giá trị mặc định nếu bạn muốn và điều này có thể được thực hiện như -

public Record(){
    this(Integer.MIN_VALUE);
}

Nói tóm lại, bất kỳ nhà xây dựng không chính tắc nào cũng nên ủy quyền cho một và điều đó đúng với bản chất mang dữ liệu của các biểu diễn này.

Xây dựng nhỏ gọn

Mặt khác, lưu ý rằng đại diện bạn đã sử dụng trong mã của mình.

public Record {}

được gọi là "hàm tạo nhỏ gọn" đại diện cho hàm tạo chấp nhận tất cả các đối số và cũng có thể được sử dụng để xác thực dữ liệu được cung cấp dưới dạng các thuộc tính của bản ghi. Một constructor nhỏ gọn là một cách khác để khai báo hàm xây dựng chính tắc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.