我是Java新手。 我想创建一个数组List,它将能够容纳任何对象。 我想知道如何实现这一目标。我正在尝试使用Class,但我不确定如何从中获取对象。这就是我要做的事情
<T> List<T> ConvertToList(<Map <String, List<Long>>map, Class<T> clazz)
{
//I want to extract all values from the map and store into an object as refered
//by clazz and put that into list.
...
...
List<T> list = new ArrayList<T>();
}
是否有可能,如果是的话怎么做?
答案 0 :(得分:0)
我相信你的问题的答案是肯定的。为此,请使用以下代码
ArrayList<Object> arrayList = new ArrayList<>();
您现在可以添加将Object扩展到数组列表的类,我相信所有类都会隐式执行此操作。
答案 1 :(得分:0)
List
实现可以保留任何类型的Object
。这是因为它使用了泛型。请记住,ArrayList
只是array
元素的包装。只需出现即可通过在幕后重新声明来操纵该数组的大小。复制此功能非常简单,如下所示:
public class MyList<T> {
T[] elements;
}
这可以通过多种方式初始化:
MyList<String> list = new MyList<String>();
MyList<MyList<Integer>> intList = new MyList<MyList<Integer>>();
因此,根据定义,您可以将其公开为原始类型:
MyList myObjectList = new MyList();
但是你的IDE会抱怨,这是件好事。您应该避免处理类型Object
,并尝试使其更具体,以避免在整个地方投射。
示例 - 编写方法签名以将Map
实现转换为List
实现。
这个更有趣,但遵循相同的原则。我们假设您要从values
中的所有Map
创建一个列表。
public List<T> <K,T> mapToList(Map<K, T> map) {
List<T> list = new ArrayList<T>();
list.addAll(map.values());
return list;
}
注意:这包含在内,这样您就可以更好地了解泛型如何工作,以及Java如何处理变量方法参数。