JAVA泛型

泛型

笔记:Java704 | ProcessOn免费在线作图,在线流程图,在线思维导图

一、什么是泛型

泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

二、泛型类

泛型作用的对象
泛型有三种使用方式,分别为:泛型类、泛型接口和泛型方法。
我们先介绍泛型类:在类的声明时指定参数,即构成了泛型类,例如下面代码中就指定T为类型参数,那么在这个类里面就可以使用这个类型了。

我们声明一个学生类,用来演示我们的泛型的作用:

//声明Student类时,同时约定数据类型T
public class Student<T>{

	//声明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<String> s1=new Student<String>("张三");
		Student<Integer> s2=new Student<Integer>(100);
		Student<Boolean> s3=new Student<Boolean>(true);
		
		System.out.println("Strng类型"+s1.name);
		System.out.println("Integer类型"+s2.name);
		System.out.println("Boolean类型"+s3.name);
	}

在这里插入图片描述

注意:泛型类型中只能使用引用数据类型,需要使用相应基本数据类型的包装类 

三、泛型接口

泛型接口的定义,与类相似,类对象在实例化时确定泛型的具体类型,接口是在实现时确定泛型的具体类型。

public interface IStudentService<T> {

	public T say();
	
}
public class StudentService implements IStudentService<String>{

	@Override
	public String say() {
		// TODO Auto-generated method stub
		return null;
	}

}
public class StudentService_2 implements IStudentService<Integer>{

	@Override
	public Integer say() {
		// TODO Auto-generated method stub
		return null;
	}

}

四、泛型方法

定义泛型方法时,必须在返回值前边加一个< T >,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值。

public class Student<T> {

	public String name;
	
	public int age;
	
	public <E> E m(E e) {
		return e;
	}
	
	public <E> 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;
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值