是的,這是可能的。一種選擇是嘗試找到一個類,該類是所有要使用的類的超類,或者是所有類實現的接口。在你的情況下,唯一的候選對象可能是對象:
public static Object[] multipleOfSameSet(Object var, int setLength) {
Object[] out = new Object[setLength];
for(int i = 0; i < setLength; i++) {
out[i] = var;
}
return out;
}
這將起作用,因爲所有Java類都直接或間接地擴展Object。原始值自動轉換爲對象(int變成Integer
s,雙倍變成Double
s等等)。
這種方法的不足之處在於,你得到一個對象數組,並且你可以用這些做的事情不多。你可能要考慮是不是讓你的方法接受一些泛型類型T,並返回T的一個ArrayList:
public static <T> ArrayList<T> multipleOfSameSet(T object, int setLength) {
ArrayList<T> out = new ArrayList<T>();
for(int i = 0; i < setLength; i++) {
out.add(object);
}
return out;
}
但是,如果你不需要事後修改的名單,我會去這樣的:
public static <T> List<T> multipleOfSameSet(T object, int setLength) {
return Collections.nCopies(setLength, object);
}
答案被稱爲[泛型類型(https://docs.oracle.com/javase/tutorial/java/泛型/ types.html) – Laszlowaty
你是什麼要通過這樣做來完成?你可以使用泛型類「對象」,但可能有更好的方法來做任何你想要做的事情。 – Zarwan
答案也被稱爲基於協議的開發...確保您的各種輸入類型實現必要的接口。 – BonanzaDriver