What does <?> sign mean in ArrayList
在android的ArrayList中,例如simplelistadapter,我通常会看到
它称为泛型。
例如,您可以执行以下操作:
1 2 3 4 5 6 |
或者您可以这样做:
1 2 3 4 5 6 |
如您所见,无需强制转换。
是通用类型的通配符。通常,您声明一个数组列表,例如:
1 | ArrayList<String> |
确切指定类型的位置。该列表将包含字符串。
但是有时您想创建一个方法或一个采用任何类型ArrayList的类,或者想要一个指向任何类型ArrayList的字段
1 2 3 | public void removeFirstItem(ArrayList< ? > target) { ... } |
现在此方法可以使用
类似的,您可以有一个局部变量:
1 2 3 | ArrayList< ? > someList; someList = new ArrayList<String>(); someList = new ArrayList<Long>); |
这有效,而:
1 2 | ArrayList<String> someList = new ArrayList<String>(); someList = new ArrayList<Long>(); |
不会,因为someList被指定为
这意味着
这是有关泛型的问题。 <(种类的对象)>语法表示只能将某种种类的对象(类实例)作为参数传递。有了语法,就是说可以传递任何类型的类实例。
语法是"通配符"。 Java泛型需要它:
-
http://www.oracle.com/technetwork/articles/javase/generics-136597.html
-
List <?>在Java泛型中是什么意思?
通配符可以是"有界的"或"无界的"。整个编译/设计时通用类型的问题与运行时JVM的"类型擦除"问题密切相关:
-
http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html
-
http://docs.oracle.com/javase/tutorial/java/generics/erasure.html
'希望有所帮助的.. pSM
类似于