在ArrayList中,<! - ? - >符号是什么意思

时间:2012-03-05 18:41:37

标签: java android arraylist

在一个用于android的ArrayList中,例如simplelistadapter,我经常看到ArrayList<?>,在一些教程中,我已经回顾过<?>被一些值取代。但我仍然不太确定这代表什么变量或限定符。

6 个答案:

答案 0 :(得分:4)

它被称为Generics

例如,您可以这样做:

ArrayList<Integer> list = new ArrayList();
list.add(new Integer(1));
list.add(new Integer(2));
.....

Integer i = (Integer)list.get(1);

或者你可以这样做:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(new Integer(1));
list.add(new Integer(2));
.....

Integer i = list.get(1);

如您所见,无需投射。

答案 1 :(得分:2)

这意味着ArrayList可以包含任何非基本类型。

答案 2 :(得分:2)

是泛型类型的通配符。通常,您声明一个数组列表,如:

ArrayList<String>

确切指定类型的位置。该列表将包含字符串。 但有时你想创建一个方法或类来获取任何类型的ArrayList,或者你想要一个指向任何类型的ArrayList的字段

public void removeFirstItem(ArrayList<?> target) { 
...
}

现在,此方法可以使用ArrayList<String>ArrayList<Long>等,并对其执行某些操作。

Similiary你可以有一个局部变量:

ArrayList<?> someList;
someList = new ArrayList<String>();
someList = new ArrayList<Long>);

这有效,而:

ArrayList<String> someList = new ArrayList<String>();
someList = new ArrayList<Long>(); 

不会,因为someList被指定为ArrayList<String>,因此只能为其分配ArrayList<String>

答案 3 :(得分:0)

ArrayList<? extends Object>类似,这意味着它可以包含从Object类继承的任何对象(即Java中的所有对象)。

答案 4 :(得分:0)

语法是“通配符”。 Java泛型需要它:

通配符可以是“有界”或“无界”。编译/设计时泛型类型的整个问题与“类型擦除”的运行时JVM问题密切相关:

'希望有帮助.. pSM

答案 5 :(得分:0)

这是关于泛型的问题。 &lt;(对象的种类)&gt;语法表示只有某种对象(类实例)可以作为参数传递。当你有语法时,你说任何类实例都可以传递。