(AdapterView<?>parent,Viewview,intposition,longid)<?>符号有什么作用?
我知道这很简单,但我在 Android 开发人员网站上找不到符号列表及其含义。只想知道是什么?符号通常在 Java 中表示;以及它的含义是否因情况而异。
例如,如果在 (AdapterView<?> parent, View view, int position, long id) 中使用,则含义发生变化,而不是另一种使用;我不会想象它会,但我想我会问以防万一。
谢谢!
回答
这是一个通配符。<?> 与 <? 扩展对象> - 任何类型。通常使用通配符的方式是 <? extends Foo>(任何扩展 Foo 的类)或 <? super Foo>(任何属于 Foo 超类型的类)
下面是一个 <?> 用法示例:
考虑以下方法,printList:
public static void printList(List<Object> list) {
for (Object elem : list)
System.out.println(elem + " ");
System.out.println();
}
printList 的目标是打印任何类型的列表,但它没有达到这个目标——它只打印了一个 Object 实例列表;它不能打印 List、List、List 等,因为它们不是 List 的子类型。要编写通用的 printList 方法,请使用 List<?>:
public static void printList(List<?> list) {
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
因为对于任何具体类型 A,List 是 List<?> 的子类型,所以可以使用 printList 打印任何类型的列表:
List<Integer> li = Arrays.asList(1, 2, 3);
List<String> ls = Arrays.asList("one", "two", "three");
printList(li);
printList(ls);
有关更多信息,请参阅:通配符(Java™ 教程 > 学习 Java 语言 > 泛型(更新))
THE END
二维码