Java 创建Stack时,等号后面的<>里什么时候需要加值类型什么时候不需要加,他们又有什么区别?

请问用Java创建Stack时,比如


Stack<Character> stack = new Stack<>();
Stack<Character> stack = new Stack<Character>();

等号前面申明的是为了申明stack类型,那等号后面的作用是什么呢?它们的区别是什么呢?我看到有时候加不加程序都能运行。

  1. <> 这个是泛形。 是代码在编译期间的的一种检查规范约束。

  2. Stack 代表Stack 后期添加元素,只能是 Character类型。

  3. 在运行期间 <> 是不会生效的,

在<>是泛型,可以让你所写的变量固定为一个类型,不会出现隐式转换的问题,如果要固定一种类型可以写,也可以不加,就和普通的方法没有区别

1.声明泛型,一个好处是你在传值的时候 限定类型,不是这个类或者子类,会有检查异常
2.获取值的时候不需要强转,默认是Object的

Stack<Character> stack = new Stack<>();//前面一定要加 Stack<Character> stack
Stack<Character> stack = new Stack<Character>();//后面这个可以不用加 new Stack<Character>();