Function: 但在添加或删除元素时,具有自动调节数组容量的功能,而不需要为此编写任何代码。
ArrayList<Employee> staff = new ArrayList<>();
这被称为“菱形” 语法,因为空尖括号<>就像一个菱形。
可以结合new操作符使用菱形语法。
编译器会检查新值是什么。
如果赋值给一个变量,或传递到某个方法,或者从某个方法返回,编译器会检查这个变量,参数或方法的泛型类型,然后将这个类型放在<>中。 在这个例子中,new ArrayList<>()将赋至一个类型为ArrayList的变量,所以泛型类型为Employee。
看下面这个简单的例子能不能让你明白泛型是什么(临时想的可能体现不出来,泛型强大的技巧,但是能说明问题)
/**
* Created by zsl on 2017/8/17.
*/
public class Demo<T> {
private T t;
public Demo(T t) {
this.t = t;
}
public void sayT() {
System.out.println(t.toString());
}
}
class Main {
public static void main(String[] args) {
//会报错,,因为我规定了泛型是String,,而不是Integer
// Demo<String> demo = new Demo<String>(1);
//不会报错,,符合泛型
Demo<String> demo = new Demo<String>("123");
demo.sayT();
}
}
泛型说白了就是一种约束,,例如集合中,如果不添加泛型约束,遍历时不能做同一处理
有问题还可以追问,,例子仅供参考,,jdk1.8完美运行。
http://www.cnblogs.com/lwbqqyumidi/p/3837629.html
/**
* Created by zsl on 2017/8/17.
*/
public class Demo<T> {
private T t;
public Demo(T t) { // 初始化
this.t = t;
}
public void sayT() {
System.out.println(t.toString());
}
}
class Main {
public static void main(String[] args) {
//会报错,,因为我规定了泛型是String,,而不是Integer
// Demo<String> demo = new Demo<String>(1);
//不会报错,,符合泛型
Demo<String> demo = new Demo<String>("123");
demo.sayT();
}
}
难道难道泛型不是说讲一大帮不同的东西放在一起吗,比如我整形就是为字符串类型,当然我知道我说的这个其实是强制类型转换,但是我想借一个这个例子来表达一下内心的疑问
1,感觉接触Java不长啊,刚开始建议一定要严谨,没有菱形语法一说,还有一般写法是List staff = new ArrayList();
2,2楼例子还是不错的,其实泛型太简单了,简单到可以一看而过,不知道你在纠结什么
3,有时间可以看看源码
范型嘛,另一个说法就是范化的模型,也就是让这个模型具有对不同种类对象的通用性,如果有开发经验的话应该会非常容易理解这个概念。
我在一开始学范型的时候一筹莫展,不过最近学了学C++的模板,发现范型或者模板确实是很伟大的一项创造。
你想了解泛型?你那本核心技术第八章专门介绍泛型程序设计,可以看看前几页,先成为第一阶段的选手。更多的看不懂别纠结,以后看。
泛型在建立集合的时候偶有用到,里面只能放对象类型。
将基础数据类型的首字母大写,就叫他们的对象类型
Integer 是int 的对象类型。
里面也可以写对象
一般都是List<泛型> list = newList<这个可以不写>();