我的问题非常简单,我们可以在方法中的相同通用占位符中传递单个Java对象以及Java对象列表。
例如:
processData(T t)/processData(List<T> t)
是否有可能将其分为一种方法和一种方法。一个通用占位符,它可以同时包含Java中的单个通用对象或通用对象列表
答案 0 :(得分:1)
如果我正确理解了这个问题,你需要一个可以处理单个元素或某个元素类型列表或类型参数T
而不会重载的方法。
最接近的是重载,如果你想共享代码,可以通过将单个元素打包到单个列表中,将单个元素方法委托给List方法:
class X<T> {
public void processData(T t) { processData(Collections.singletonList(T)); }
public void processData(List<T> ts) { ... };
}
但是,通常您希望在单个元素方法中自定义代码,以使其在特殊情况下运行得更快。
如果您放弃使用List并且您很乐意使用数组,那么您可以使用vararg,但是在引擎盖下,您总是将数组传递给方法:
class X<T> {
public void processData(T ... ts) {
for (T t : ts) { ... };
}
}
...
T x, y, z;
T[] xxx;
...
// the following are all valid calls to processData:
processData(x);
processData(x, y, z);
processData(xxx);
答案 1 :(得分:0)
是。例如:
public class MyWorker<T> {
public void processData(T t){ }
public void processData(List<T> t) {}
}