java – 我们可以在同一Generic PlaceHolders中传递单个对象以及对象列表

我的问题非常简单,我们可以在方法中的相同通用占位符中传递单个
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);
点赞