在列表中存储时是否可以检索泛型类型?

时间:2011-10-13 14:31:42

标签: java generics

我必须遵循以下问题:我有一个名为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,现在可以确定哪个类型在那里但是这看起来有点脏......

4 个答案:

答案 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)

你必须在某些时候施放:(