具体 - 我甚至不知道是否可能,但可能有些东西,我不知道。 我需要从String获取类类型并将其用作泛型类型:
//Don't mind this
String columnName = n.getAttributes().getNamedItem("name").getTextContent();
//That would be canonical class name
String columnType = n.getAttributes().getNamedItem("type").getTextContent();
Column<**Type from columnName**> col = new Column<>(columnName);
这样的事情是否可能?
答案 0 :(得分:0)
不确切地知道你的意思。
但是要从String中获取一个Type,你必须使用
Class clazz = Class.forName("YourString");
如果类加载器能够将给定的String解析为位于其中的类 它将为类路径提供类型为Class的实例。
使用表达式
Object obj = clazz.newInstance();
您可以创建此类型的实例。
我认为存在某种类似的表达
ArrayList<? super Double> list;
,在你的情况下:
Column<? super GenericColumn> col = new Column<GenericColumn>(columnName);
这意味着由适当的String给出的类必须继承自 在运行时已知的GenericColumn。也许这可能是解决问题的方法。
无论如何在这种情况下,我认为泛型不是有用的。