Ответ 1
Если вы действительно хотите сделать это, вам нужно будет обернуть принятые вами классы в собственный собственный пользовательский класс. В вашем примере, возможно, что-то вроде:
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)));
Но, честно говоря, это звучит слишком сложно и слишком много работает, чтобы вызывать метод с разными типами параметров. Вы уверены, что не можете достичь того же, используя два метода, и третий метод для общей логики?