我必须遵循以下问题:我有一个名为Generic<A>
的泛型类,这个类的一些实例可以说
Generic<String> foo;
Generic<Double> bar;
我将它们放入这样的列表中:
List<Generic<?>> list;
list.add(foo);
list.add(bar);
现在我想读一个返回A
的方法,但我只得到Object
作为返回类型,我知道为什么,因为?在列表的泛型类型中。我也知道List<Generic<String>>
是一个完全不同于List<Generic<Double>>
的类型......但是有没有任何类型的List Structure或Generic Type参数可以用来保持Generic类的Type相同?在我的程序中为我演示没有问题,因为我为列表中的每个实例保存了一个ID,现在可以确定哪个类型在那里但是这看起来有点脏......
答案 0 :(得分:1)
这是你要找的吗?:
public <T> T someMethod(List<Generic<T>> list){
//Return an element from list
}
答案 1 :(得分:0)
如果你想要一个普通类型,你应该使用Object或一些包装你的东西的类。如果您使用Object,那么只需在方法中检查对象的实例
答案 2 :(得分:0)
您是否必须使用?
或者您是否可以更改代码以使用List<Generic<T>>
来保留类型?
如果您想在使用某些内容初始化List
后检查类型,可以使用list.get(0).getClass()
获取一些信息,但这不是一个很好的编程方式
答案 3 :(得分:0)
你必须在某些时候施放:(