是的,这是可能的。一种选择是尝试找到一个类,该类是所有要使用的类的超类,或者是所有类实现的接口。在你的情况下,唯一的候选对象可能是对象:
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