java - 通用返回类型?

时间:2014-04-28 19:11:42

标签: java generics syntax

我不确定这是否可以在Java中使用。此外,我无法弄清楚要在Google上查询的内容。 无论如何,我想要一个方法,将一个参数作为一个Class(接口或类),方法的返回类型是该类的一个实例。我不想在事后重新制作一个Object。

我不确定此功能是否存在或语法是什么。假设我有一个名为XYZ的类,这是我的伪方法。

private XYZ createInstance(XYZ.class, other args) {
  ...
  // create an instance of XYZ with other args named "_xyz_"
  ...
  return _xyz_;
}

现在假设XYZ是某种通用语法。这在Java中是否可行?谢谢你的帮助。

2 个答案:

答案 0 :(得分:7)

private <T> T createInstance(Class<? extends T> c) {
    return c.newInstance();
}

答案 1 :(得分:2)

使用钻石操作符:

private <T> T createInstance(Class<T> concreteClass){
  return concreteClass.newInstance();
}

//usage
Integer i = instanceWithThatMethod.createInstance(Integer.class);

要传递&#34;参数&#34;,你必须得到与所需参数类型匹配的类的构造函数,并调用该函数的调用,如下所示:

private <T> T createInstance(Class<T> concreteClass, String stringArg){
    return concreteClass.getConstructor(String.class).newInstance(stringArg);
}

//usage
SomeClass s = createInstance(SomeClass, "testString");

//equals
SomeClass s = new SomeClass("testString");

//where SomeClass HAS to serve:
public SomeClass(String s){
  ...
}