使用泛型返回参数类的实例

时间:2011-11-30 12:06:15

标签: java generics

这对你们很多人来说可能是显而易见的,但

如何将此(示例)函数转换为使用泛型:

private Object makeNewInstance(Class clazz) throws InstantiationException, IllegalAccessException {
    return clazz.newInstance();
}

我期待这样的事情:

private <T> T makeNewInstance(T clazz) throws InstantiationException, IllegalAccessException {
    return clazz.newInstance();
}

但参数T必须是一个类,并返回T作为T的实例。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

将参数类型更改为Class<T>

private <T> T makeNewInstance(Class<T> clazz) throws InstantiationException, IllegalAccessException {
  return clazz.newInstance();
}

有关Class<T>newInstance()

的详情,请参阅this

此外,根据您的上下文,您可以考虑将makeNewInstance()方法设为静态。

答案 1 :(得分:0)

private <T> T makeNewInstance(Class<T> clazz) throws InstantiationException, IllegalAccessException {
    return clazz.newInstance();
}

答案 2 :(得分:0)

您的参数仍应为Class类型:

private <T> T makeNewInstance(Class<T> clazz) throws InstantiationException, IllegalAccessException {
  return clazz.newInstance();
}
相关问题