如果你真的想这样做,你需要将你接受的类包装在你自己的自定义类中。在您的示例案例中,可能是这样的:
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)));
但老实说,这听起来有点太复杂了,而且工作太多了,只是为了能够调用具有不同参数类型的方法。您确定使用两种方法和第三种方法对于通用逻辑无法实现相同的目标吗?