本当にとしたい場合は、カスタムクラスのカスタムクラス内に受け入れられたクラスをラップする必要がありますウル自身。あなたの例の場合には、おそらくのようなもの:
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);
}
}
そして、あなたのorDoer
方法は次のようになります。
public void orDoer(OrDoerElement someData) { .... }
次にあなたがそれらのいずれかを構築し、いずれかを使用して、あなたの方法で使用することができます。
orDoer(OrDoerElement.fromCharSequence("a string of chars"));
orDoer(OrDoerElement.fromNumber(new Integer(6)));
しかし、正直言って、それはちょっと複雑すぎると思いますし、異なるパラメータタイプを持つメソッドを呼び出すことができるようにはあまりにも多くの作業をしています。あなたは2つの方法と共通ロジックの3つ目の方法を使って同じことを達成できないと確信していますか?
「Number」または「CharSequence」をそれぞれ受け入れ、次に3番目のプライベートメソッドに委譲して作業を行う2つの別々のメソッドではどうしますか? –
私は2つのタイプを扱っている場合、利益は実体ではないと同意しますが、使用可能なスーパータイプを共有していないより多くのパラメータタイプを委譲するのは簡潔な方法です。 – Cel
[Ceylon](http:// ceylon-lang.org/documentation/1.1/introduction/)の共用体型です。 ;) – Anonsage