关于java:java – Generic返回类型?

java - Generic Return Type?

本问题已经有最佳答案,请猛点这里访问。

我不确定这是否可能在Java中。另外,我也不知道该在谷歌上查询什么。无论如何,我希望一个方法将类(接口或类)作为参数,并且该方法的返回类型是该类的实例。我不想事后重铸一个物体。

我不确定这个特性是否存在或者语法是什么。假设我有一个名为xyz的类,这里是我的伪方法。

1
2
3
4
5
6
private XYZ createInstance(XYZ.class, other args) {
  ...
  // create an instance of XYZ with other args named"_xyz_"
  ...
  return _xyz_;
}

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


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


使用菱形运算符:

1
2
3
4
5
6
private <T> T createInstance(Class<T> concreteClass){
  return concreteClass.newInstance();
}

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

要传递"arguments",必须获取与所需参数类型匹配的类的构造函数,然后调用对该类的调用,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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){
  ...
}