cuốn sách gpt4 ai đã làm

super 初始化后JavaFx调用 super 方法

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:36:49 27 4
mua khóa gpt4 Nike

Tôi có một lớp triển khai Khởi tạo.

lớp trừu tượng công khai Ví dụClass triển khai Có thể khởi tạo {

khoảng trống công khai Ví dụClass() {
// Tải FXML
}

@Ghi đè
public void khởi tạo (vị trí URL, tài nguyên ResourceBundle) {
// Khởi tạo nội dung
}

khoảng trống công khai sauInitialize() {
// Thực hiện những việc liên quan khi FXML đang được tải
}
}

Sau đó tôi mở rộng lớp trừu tượng này:

lớp công khai Ví dụSubclass mở rộng Ví dụClass {

Ví dụ công khaiSubclass() {
super(/* mã thực có thông số */);
this.afterInitialize(); // Vấn đề ở đây
}
}

Tuy nhiên, khi tôi gọi afterInitialize(), nó hoạt động như thể FXML trong lớp trừu tượng chưa được tải. Điều này làm tôi bối rối vì trước tiên tôi đã gọi hàm tạo super(), vì vậy tôi tin rằng FXML lẽ ra đã được tải rồi.

我做错了什么?

Cảm ơn trước.

câu trả lời hay nhất

根据这个trả lời , khởi tạo Việc gọi phương thức không xảy ra trong hàm tạo mà xảy ra sau nó. Vì vậy, khi bạn gọi hàm tạo của một lớp consau khi khởi tạokhi nào, nó thực sự làkhởi tạoĐã gọi trước!

Nói một cách ngắn gọn: Hàm tạo được gọi trước, sau đó bất kỳ trường chú thích @FXML nào sẽ được điền, sau đó khởi tạo() được gọi...

Vì vậy, khi gọi khởi tạo Khi tất cả các phần tử FXML được tải, như những người khác đã đề xuất, bạn có thể khởi tạo Được gọi trong phương thức sau khi khởi tạo Nhưng nếu bạn không muốn làm điều đó, bạn có thể sử dụng @PostConstruct chú thích:

lớp trừu tượng công khai Ví dụClass triển khai Có thể khởi tạo {

khoảng trống công khai Ví dụClass() {
// Tải FXML
}

@Ghi đè
public void khởi tạo (vị trí URL, tài nguyên ResourceBundle) {
// Khởi tạo nội dung
}

@PostConstruct
khoảng trống công khai sauInitialize() {
// Thực hiện những việc liên quan khi FXML đang được tải
}
}


lớp công khai Ví dụSubclass mở rộng Ví dụClass {

Ví dụ công khaiSubclass() {
super(/* mã thực có thông số */);
}

@PostConstruct
@Ghi đè
khoảng trống công khai sauInitialize() {
super.afterInitialize();
// những thứ khác
}
}

Về việc JavaFx gọi siêu phương thức sau khi khởi tạo siêu, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/40923824/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress