可能,我会问的是一个可怕的问题,因为JAVA是强类型的语言,但我会问,确定。通用和动态关联的类型
我想实现一些杰克逊将要映射到的模型。 假设我们有: 有一个属性值的SomeObject。 SomeObject是一个接口:
interface SomeObject <T> {
T getValue();
}
值可以是布尔值,可以是List,也可以是简单的字符串。 ObjectOne和ObjectTwo实现SomeObject 我想知道,如果我们将有这样的对象:
List<SomeObject> someObject = new ArrayList<>();
,我们将不得不在该列表:ObjectOne,ObjectTwo如果有可能调用的getValue每个那些对象,并没有将它投射到给定的课堂上,获得适当的价值? 我知道我可以做这样的事情:
(String) list.get(0).getValue();
但有一种方式来获得这样的结果:
String firstItemIsAString = list.get(0).getValue();
ArrayList secondItemIsAnArrayList = list.get(1).getValue();
我知道这是不是一个javascript,但可能与仿制药的一些帮助这可能是不可思议的? 我会在SomeObjects的列表中添加该项目将以这样的方式添加:
List<SomeObject> list = new ArrayList<>();
list.add(new ObjectOne<String>());
list.add(new ObjectTwo<ArrayList>());
不,泛型是编译时构造。编译时必须知道类型。 – 2015-04-02 22:21:27
所以就像我想的那样。谢谢@SotiriosDelimanolis – 2015-04-02 22:23:47
也许如果我们知道你为什么想这样做,我们可以建议一个可行的选择。 – Radiodef 2015-04-02 22:30:02