在java中编写泛型函数

Ani*_*ish 3 java generics

我想写一个函数,它会返回一个我传递给它的指定类型的Vector.例如:

// 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) ; 
Run Code Online (Sandbox Code Playgroud)

我想以getVector(Class classType)这种方式实现,以便返回该特定类类型的新向量.如何在不使用反射的情况下实现它,并且不将类名作为String传递(我只想传递类类型,就像我在上面的例子中提到的那样.)

实际上,我想要一个函数getVector()有点像这样..

Vector<T> getVector(T t) {
    return new Vector<t>();
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ote 8

看一下通用方法Java教程.这是一种做你想做的事情的方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

我假设你不会只是想扔掉t你传入的getVector(T t),所以我把它卡在了Vector.

从理论上讲,如果你想要的只是输入机制,你不需要将任何东西传递给方法:

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

//Usage
Vector<Integer> vector = getVector();
Run Code Online (Sandbox Code Playgroud)

Java可以确定您希望它Vector<Integer>从声明中的泛型类型中键入.