Nếu bạn thực sự muốn thực hiện điều đó, bạn sẽ cần phải bọc các lớp được chấp nhận trong lớp tùy chỉnh của yo riêng của bạn. Trong trường hợp ví dụ của bạn, có thể là một cái gì đó như:
public class OrDoerElement {
private final Number numberValue;
private final CharSequence charSequenceValue;
private OrDoerElement(Number number, CharSequence charSequence) {
this.numberValue = number;
this.charSequenceValue = charSequence;
}
public static OrDoerElement fromCharSequence(CharSequence value) {
return new OrDoerElement(null, value);
}
public static OrDoerElement fromNumber(Number value) {
return new OrDoerElement(value, null);
}
}
Và phương pháp orDoer
của bạn trở thành:
public void orDoer(OrDoerElement someData) { .... }
Sau đó, bạn có thể xây dựng một trong những và sử dụng trong phương pháp của bạn bằng cách sử dụng:
orDoer(OrDoerElement.fromCharSequence("a string of chars"));
orDoer(OrDoerElement.fromNumber(new Integer(6)));
Nhưng thành thật mà nói, có vẻ hơi quá phức tạp và quá nhiều công việc chỉ để có thể gọi một phương thức với các kiểu tham số khác nhau. Bạn có chắc bạn không thể đạt được cùng một bằng cách sử dụng hai phương pháp, và một phương pháp thứ ba cho logic chung?
Bạn sẽ làm gì bên trong phương pháp mà không thể thực hiện với hai phương pháp riêng biệt chấp nhận 'Số' hoặc' CharSequence' tương ứng và sau đó ủy quyền cho phương pháp riêng tư thứ ba để thực hiện công việc? –
Tôi đồng ý rằng lợi ích là không đáng kể nếu tôi đang xử lý hai loại, nhưng nó có vẻ là một cách ngắn gọn để ủy quyền nhiều loại tham số hơn (không chia sẻ siêu kiểu có thể sử dụng) – Cel
Bạn nên xem [Ceylon] (http: // Các loại công đoàn của ceylon-lang.org/documentation/1.1/introduction/). ;) – Anonsage