字符串的通用类型声明

时间:2015-12-22 07:01:50

标签: java string generics instantiation

我有一个Class TestClass {} 我需要从字符串输入

为这个类创建实例
{{1}}

如何实现这一目标?

3 个答案:

答案 0 :(得分:4)

你明确地误解了Java中泛型的目的。简而言之,泛型使类型成为参数,但不是精确值。 Take a look at documentation to get more.引用本文:

  

简而言之,泛型使类型(类和接口)在定义类,接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数提供了一种使用不同输入重用相同代码的方法。不同之处在于形式参数的输入是值,而类型参数的输入是类型。

如果要在类实例化期间定义一些特定值,pass it to constructor as parameter

UPDATE:

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,然后您可以将其解析为任何其他类型的数据,例如intfloat等。

例如:

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方面的其他内容:)