Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我们可以在相同的通用占位符中传递单个对象以及对象列表吗_Java_Generics - Fatal编程技术网

Java 我们可以在相同的通用占位符中传递单个对象以及对象列表吗

Java 我们可以在相同的通用占位符中传递单个对象以及对象列表吗,java,generics,Java,Generics,我的问题很简单,我们能在一个方法中传递一个Java对象以及同一个通用占位符中的Java对象列表吗 例如: processData(T)/processData(List T) 是否有可能将其合并到一个方法中&一个通用的占位符,它可以同时保存单个通用对象或Java中的通用对象列表。例如: public class MyWorker<T> { public void processData(T t){ } public void processData(List<T>

我的问题很简单,我们能在一个方法中传递一个Java对象以及同一个通用占位符中的Java对象列表吗

例如:
processData(T)/processData(List T)


是否有可能将其合并到一个方法中&一个通用的占位符,它可以同时保存单个通用对象或Java中的通用对象列表。例如:

public class MyWorker<T> {
  public void processData(T t){ }
  public void processData(List<T> t) {}
}
公共类MyWorker{
公共void processData(T){}
public void processData(列表t){}
}

如果我正确理解了这个问题,您需要一个单一的方法来处理单个元素或特定元素类型的列表或类型参数
T
,而无需重载

最接近的方法是重载,如果要共享代码,可以通过将单个元素打包到单个列表中,将单个元素方法委托到列表方法中:

class X<T> {
   public void processData(T t) { processData(Collections.singletonList(T)); }
   public void processData(List<T> ts) { ... }; 
} 
X类{
public void processData(T){processData(Collections.singletonList(T));}
公共void processData(列表ts){…};
} 
但是,通常您希望自定义单元素方法中的代码,以使其在这种特殊情况下运行得更快

如果您放弃列表,并且乐于使用数组,那么您可以使用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);
X类{
公共无效处理数据(T…ts){
对于(T:ts){…};
} 
} 
...
tx,y,z;
T[]xxx;
...
//以下是对processData的所有有效调用:
过程数据(x);
过程数据(x,y,z);
processData(xxx);
Sure
processData(T)
可以为
T
设置一个
列表。我认为您需要给出一个更具体的示例(完整的代码)来说明您打算做什么,因为这个问题太容易解释了。