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

java - Khởi tạo lớp ẩn danh với định nghĩa - ghi đè phương thức được bảo vệ

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 19:07:50 hai mươi bốn 4
mua khóa gpt4 Nike

Giả sử tôi có một lớp học:

hạng A {
protected int x; // không có getter, setter công khai
}

Bây giờ tôi muốn mở rộng lớp A, để ghi đè biến "x". Câu trả lời là:

lớp công khai SomeClass {
một sốMethod() {
A ExtendedClass = MyExtension mới(5);
}

lớp MyExtension mở rộng A {
MyExtension công khai(int x) {
super.x = x;
}
}
}

Câu hỏi của tôi là: Có thể thực hiện việc này mà không cần xác định riêng các lớp lồng nhau không? ý tôi là thế này

    một sốMethod() {
Một lớp mở rộng = A mới () {
// ở đây hãy làm điều gì đó như super.x = 5;
}
}

tôi đã cố gắng Gọi phương thức mới được xác định từ lớp ẩn danhNhưng nó không cho phép tôi khởi tạo lớp A. Tôi cũng không muốn sử dụng sự phản chiếu.

Tôi chỉ không muốn định nghĩa một lớp lồng nhau chỉ để ghi đè một thuộc tính. Nguồn gốc của sự cố là ImapMailReceiver tích hợp Spring, nơi tôi muốn ghi đè bộ lập lịch tác vụ. Như được hiển thị bên dưới:

    ImapMailReceiver cuối cùng imapMailReceiver = ImapMailReceiver mới() {
super.setTaskScheduler(MYTASKSCHEDULERHERE);
}

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

của bạn mới A() { ... } Vẫn chỉ định nghĩa một lớp mới. Vì vậy, bạn không thể đơn giản đặt bất kỳ câu lệnh nào giữa các dấu ngoặc nhọn, chỉ các khai báo trường, phương thức và kiểu lồng nhau, màkhông được phépNgười xây dựng. Thay vào đó, bạn có thể thêm một trình khởi tạo cá thể:

Một lớp mở rộng = A mới () {
{
x = 5;
}
}

Về java - Khởi tạo lớp ẩn danh với định nghĩa - ghi đè phương thức được bảo vệ, 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/51893423/

hai mươi bốn 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