3

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

// 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) ; 

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

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

Vector<T> getVector(T t) {
    return new Vector<t>();
}
4

3 回答 3

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;
}

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

从理论上讲,如果您想要的只是类型机制,则不需要将任何内容传递给该方法:

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

//Usage
Vector<Integer> vector = getVector();

Vector<Integer>Java 可以从声明中的泛型类型中找出您希望将其键入为 a 。

于 2012-06-16T19:55:03.937 回答
1
public <T> Vector<T> getNewVector(Class<T> type) {
    return new Vector<T>();
}
于 2012-06-16T19:55:19.660 回答
1

为什么还要在这里写一个函数呢?

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

或者,更好的是,如果您使用的是 Java 7,

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

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

于 2012-06-16T21:58:01.427 回答