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

Khi nào cần một số> thay vì Một số?

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

Để ý:Câu hỏi này không liên quan gì đến Enum, vì vậy nó không trùng lặp.Enum buộc phải so sánh chỉ với chính nó vì trình biên dịch tạo ra các tham số kiểu chứ không phải do các tham số kiểu đệ quy của Java.

Tôi đang cố gắng tìm lợi thế của việc khai báo lớp là:

lớp công khai Some>

với tuyên bố là:

lớp công khai Some

Tôi cố gắng cung cấp sự trở lại E phương thức và phương thức trả về Một số , các cuộc gọi chéo khác nhau trong hệ thống phân cấp lớp phức tạp vàMỗi lần tôi cố gắng xóa phần bổ sung - Không có lỗi/cảnh báo mới.

Bạn có thể chỉ cho mình cách chứng minh bổ sung này được không Thuận lợi? ? Do khai báo JDK, tôi cho rằng có một:>

Câu trả lời cho các câu hỏi khác về SO như:

Với cấu trúc bổ sung, bạn biết rằng bất kỳ lớp nào mở rộng Enum đều chỉ có thể so sánh được với chính nó

Tuy nhiên, tôi có thể phá vỡ lý thuyết này khá dễ dàng:

lớp tĩnh công khai Animal> {
so sánh boolean công khai(E other) {...}
}

lớp công khai Cat mở rộng Animal { }
lớp công khai Dog mở rộng Animal { } // Lưu ý "Cat" !!!

Bất chấp đệ quy phổ quát,Tôi vẫn có thể so sánh Chó và Mèo:

Chó chó = Chó mới();
dog.compare(new Cat());

Lý thuyết truyền tải:

bạn biết rằng bất kỳ lớp nào mở rộng Animal đều chỉ có thể so sánh được với chính nó

Điều này sai - Tôi đã so sánh lớp Dog, lớp này mở rộng Animal với Cat chứ không phải chính nó.

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

ít người thích lớp Some> Những tình huống biên giới như vậy là cần thiết. Hầu hết mọi người viết điều này, mã không thực sự sử dụng liên kết,lớp Một sốĐiều đó cũng được.

Tuy nhiên, trong một số trường hợp đặc biệt,lớp Some> Các ranh giới trong thực tế được sử dụng. Ví dụ:

lớp trừu tượng Some> {
trừu tượng E foo();
Một số bar() {
return foo();
}
}

Về câu hỏi của bạn——lớp Một số Thế còn nó thì sao? ? Chà, vấn đề đầu tiên và rõ ràng nhất là bạn đang sử dụng các kiểu nguyên thủy. Không bao giờ sử dụng các kiểu nguyên thủy trong mã mới. Nhưng bạn không tin điều đó.

Với lớp trên (lớp Một số) kiểu nguyên thủy确实Biên dịch với một cảnh báo (bạn có thể tự chịu rủi ro khi bỏ qua nó). Tuy nhiên, kiểu nguyên thủy có nghĩa là bạn có thể làm những việc không an toàn với nó.

Việc đưa ra một ví dụ để chứng minh nó không an toàn cần phải nỗ lực. Đây là một:

lớp trừu tượng Some {
trừu tượng E foo();
Một số bar() {
return foo();
}
}

lớp SomeFoo mở rộng Some {
SomeFoo foo() { trả lại cái này }
}

lớp SomeBar mở rộng Some {
SomeFoo foo() { trả về SomeFoo mới();
}

lớp SomeBaz mở rộng Some {
SomeBar foo() { trả về SomeBar mới();
}

// sau đó trong một số phương thức:
Some a = new SomeBaz();
Some b = a.bar();
SomeBar c = b.foo();

Mã biên dịch có cảnh báo nhưng không có lỗi và lỗi ClassCastExceptionvào thời gian chạy.

Giới thiệu về java - Khi nào Some> được yêu cầu thay vì Some? , 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/25365589/

27 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
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