我有一个Class TestClass {} 我需要从字符串输入
为这个类创建实例{{1}}
如何实现这一目标?
答案 0 :(得分:4)
你明确地误解了Java中泛型的目的。简而言之,泛型使类型成为参数,但不是精确值。 Take a look at documentation to get more.引用本文:
简而言之,泛型使类型(类和接口)在定义类,接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数提供了一种使用不同输入重用相同代码的方法。不同之处在于形式参数的输入是值,而类型参数的输入是类型。
如果要在类实例化期间定义一些特定值,pass it to constructor as parameter。
OP指出他在原始问题中提到的字符串值是类名的字符串表示。在这种情况下,泛型将无济于事,因为Java泛型只是编译时功能,您无法使用在运行时计算的值来参数化类。您可以按照此问题中描述的名称创建Class
实例:Getting Class type from String,但它仍然无法用作通用参数。
答案 1 :(得分:0)
这不能完成,字符串“”和所有原始数据类型如int
double
等都不能用于通用。
但你可以这样做:
Foo<String>
或Foo<Integer>
等......
如果这不能满足您的需求,那么您可以创建一个类并存储您需要的所有数据,如下所示:
public class Foo {
String stringValue;
int intValue;
...
}
并像这样使用它:
public TestClass<Foo> {
...
}
<强>更新强>
您还可以将数据设置为String
,然后您可以将其解析为任何其他类型的数据,例如int
,float
等。
例如:
LinkedList<String> list = new LinkedList<>();
list.add("12");
int intValue = Integer.parseInt(list.get(0));
答案 2 :(得分:0)
这就是我想要做的,
Class clazz = Class.forName(classnameAsString);
clazz.newInstance(); // created object from name of class
回顾了我以前的问题:P。感谢其他答案,这些介绍给我介绍了Java方面的其他内容:)