用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<>();