Nếu bạn không sử dụng Java Generics, tôi tin rằng không thể có hai phương thức trong cùng một lớp chỉ khác nhau về kiểu trả về của chúng.Bạn có thể thực hiện phương thức nạp chồng bằng generics và chỉ thay đổi kiểu generic của chữ ký phương thức?
Nói cách khác, đây sẽ là bất hợp pháp:
public HappyEmotion foo(T emotion) {
// do something
}
public SadEmotion foo(T emotion) {
// do something else
}
là giống nhau đúng khi quá tải phương pháp mà trả về một kiểu chung chung mà có thể thực hiện các giao diện khác nhau, chẳng hạn như nếu hai phương pháp sau đây đã có mặt tại định nghĩa cùng một lớp:
public <T extends Happy> T foo(T emotion) {
// do something
}
public <T extends Sad> T foo(T emotion) {
// do something else
}
Điều này có bất hợp pháp không?
Bạn đã cố gắng biên dịch nó chưa? Trình biên dịch (tuân thủ) sẽ nhanh chóng cho bạn biết những gì là hợp pháp và những gì là bất hợp pháp. Một câu hỏi hay hơn sẽ là 'tại sao ... bất hợp pháp?' nếu bạn không hiểu lý do. –