Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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,我想写一个函数,它将返回我传递给它的指定类型的向量。例如: // Here getNewVector(<ClassType>) should return me an integer Vector. Vector<Integer> myIntVector = getNewVector(Integer.class); //should get a String vector in this case and so on. Vector<String> myStr

我想写一个函数,它将返回我传递给它的指定类型的向量。例如:

// Here getNewVector(<ClassType>) should return me an integer Vector.
Vector<Integer> myIntVector = getNewVector(Integer.class);
//should get a String vector in this case and so on.
Vector<String> myStringVector = getNewVector(String.class) ; 
请看下面的图片。这里有一种方法可以满足您的需求:

public static <T> Vector<T> getVector(Class<T> clazz) {
  return new Vector<T>()
}

public static <T> Vector<T> getVector(T t) {
  Vector<T> vector = new Vector<T>();
  vector.add(t);
  return vector;
}
Java可以从声明中的泛型类型中判断出您希望将其类型化为
向量。

公共向量getNewVector(类类型){
public <T> Vector<T> getNewVector(Class<T> type) {
    return new Vector<T>();
}
返回新向量(); }
为什么还要在这里写函数呢

Vector<Integer> myIntVector = new Vector<Integer>();
Vector myIntVector=new Vector();
或者,更好的是,如果您使用的是Java 7

Vector<Integer> myIntVector = new Vector<>();
Vector myIntVector=new Vector();

(当然,具有不同元素类型的向量类型在运行时没有实际的区别。)

似乎这应该是一种静态方法。使用向量时,我会三思而后行。你考虑过用列表代替吗?非常感谢。这真的很有帮助
Vector<Integer> myIntVector = new Vector<Integer>();
Vector<Integer> myIntVector = new Vector<>();