我的问题非常简单,我们可以在方法中的相同通用占位符中传递单个
Java对象以及
Java对象列表.
例:
processData(T t)/ processData(List< T> t)
是否有可能将其分为一种方法和一种方法.一个通用的占位符,它可以同时包含Java中的单个Generic对象或Generic对象列表
最佳答案 如果我正确理解了这个问题,你需要一个单独的方法来处理单个元素或某个元素类型或类型参数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);