笔记:Java704 | ProcessOn免费在线作图,在线流程图,在线思维导图
一、什么是泛型泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
二、泛型类泛型作用的对象
泛型有三种使用方式,分别为:泛型类、泛型接口和泛型方法。
我们先介绍泛型类:在类的声明时指定参数,即构成了泛型类,例如下面代码中就指定T为类型参数,那么在这个类里面就可以使用这个类型了。
我们声明一个学生类,用来演示我们的泛型的作用:
//声明Student类时,同时约定数据类型T public class Student{ //声明T类型的变量name public T name; //声明T类型的形参name为T类型的成员变量赋值 public Student(T name) { this.name=name; } //声明T类型返回值的方法say public T say() { return name; } }
在使用类时就可以传入相应的类型,构建不同类型的实例,传入String,Integer,Boolean3个类型
public static void main(String[] args) {
//泛型中只能使用引用数据类型
Student s1=new Student("张三");
Student s2=new Student(100);
Student s3=new Student(true);
System.out.println("Strng类型"+s1.name);
System.out.println("Integer类型"+s2.name);
System.out.println("Boolean类型"+s3.name);
}
注意:泛型类型中只能使用引用数据类型,需要使用相应基本数据类型的包装类
三、泛型接口泛型接口的定义,与类相似,类对象在实例化时确定泛型的具体类型,接口是在实现时确定泛型的具体类型。
public interface IStudentService四、泛型方法{ public T say(); } public class StudentService implements IStudentService { @Override public String say() { // TODO Auto-generated method stub return null; } } public class StudentService_2 implements IStudentService { @Override public Integer say() { // TODO Auto-generated method stub return null; } }
定义泛型方法时,必须在返回值前边加一个< T >,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。
public class Student{ public String name; public int age; public E m(E e) { return e; } public void m1(E e) { System.out.println(e); } }
型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。
五、泛型通配符E - Element(在集合中使用,因为集合中存放的是元素),E是对各方法中的泛型类型进行限制,以保证同一个对象调用不同的方法时,操作的类型必定是相同的。E可以用其它任意字母代替
T - Type(Java 类),T代表在调用时的指定类型。会进行类型推断
K - Key(键)
V - Value(值)
N - Number(数值类型)
?- 表示不确定的java类型,是类型通配符,代表所有类型。?不会进行类型推断
public void m(List> list) {
return;
}



