List>和 List
List>
List<?> 表示一个类型未知的 List,其中元素的类型可以是任意的(例如 List<Integer>、List<String> 等)。
只能从 List<?> 中读取元素,但无法向其中添加元素(除了 null)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import java.util.List;
import java.util.ArrayList;
public class WildcardExample {
public static void main(String[] args) {
List<?> list1 = new ArrayList<String>(); // 可以是任意类型的 List
List<?> list2 = new ArrayList<Integer>();
// 你可以读取元素,但不能添加非 null 的元素
Object obj = list1.get(0); // 获取元素,返回类型为 Object
// 以下行会报错,因为不能向 List<?> 中添加元素
// list1.add("Hello"); // 编译错误
// list1.add(10); // 编译错误
}
}
|
List<Object>
List<Object> 是一个具体的类型参数,它表示一个可以包含任意类型的对象的 List。由于所有 Java 类(包括自定义类)都继承自 Object,所以 List<Object> 可以存储任何类型的元素。
List<Object> 是一个 List,其中的元素必须是 Object 或其子类(即任何对象)。
- 可以向
List<Object> 添加任何类型的元素,甚至是 null 或者不同类型的对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.util.List;
import java.util.ArrayList;
public class ObjectListExample {
public static void main(String[] args) {
List<Object> list = new ArrayList<>();
list.add("Hello"); // 添加一个 String
list.add(10); // 添加一个 Integer
list.add(3.14); // 添加一个 Double
// 可以从 list 中获取任何类型的元素,但需要进行类型转换
Object obj1 = list.get(0); // 返回 Object 类型,需要强制转换
String str = (String) obj1; // 需要类型转换
System.out.println(str); // 输出 "Hello"
}
}
|