一个关于java泛型的疑问
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个关于java泛型的疑问相关的知识,希望对你有一定的参考价值。
之前对如下代码的区别不了解
Stack<Integer> stack = new Stack<Integer>();
Stack stack1 = new Stack();
现在写个demo理解下,主要区别为是否指定了泛型。
import java.util.ArrayList;
import java.util.Stack;
/**
* @Description: TODO
* @author: HardyDragon
* @date: 2021年07月28日 22:07
*/
public class Test01 {
public static void main(String[] args) {
// 不指定泛型 默认为 Object
ArrayList arrayList = new ArrayList();
arrayList.add(1);
arrayList.add('1');
arrayList.add(1.2);
for (Object o : arrayList) {
System.out.println(o.getClass().getName());
}
// 指定泛型后编译器会检查参数类型
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
// list.add(2.1);
for (Integer integer : list) {
System.out.println(integer);
}
Stack<Integer> stack = new Stack<Integer>();
Stack stack1 = new Stack();
stack.push(1);
stack.push((int) '1');
stack1.push(1);
stack1.push('1');
stack1.push(1.1);
for (Integer integer : stack) {
System.out.println(integer);
}
for (Object o : stack1) {
System.out.println(o.getClass().getName());
System.out.println(o);
}
}
}
java.lang.Integer
java.lang.Character
java.lang.Double
1
2
1
49
java.lang.Integer
1
java.lang.Character
1
java.lang.Double
1.1
Process finished with exit code 0
不指定泛型 默认类型为 Object,指定后对元素类型有要求
以上是关于一个关于java泛型的疑问的主要内容,如果未能解决你的问题,请参考以下文章