泛型

泛型

泛型本质是参数化类型,也就是说操作的数据类型被指定为一个参数。

这就是参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法

所谓泛型:就是指在类创建时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定类型

为什么要用泛型
  1. 类型安全

    泛型的主要目的时提高Java程序的类型安全。编译时强类型检查;

    使用泛型编写的程序代码,要比使用 Object 变量再进行强制类型转换的代码,具有更好的安全性和可读性。

    多种数据类型执行相同的代码使用泛型可以复用代码。

  2. 消除强制类型转换

    泛型的附带好处是消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错的机会

  3. 潜在的性能收益

    泛型为较大的优化带来可能

参数化类型

ArrayList 占位符

通配符 ?

上下限

?exends people 上限

?super people 下限

泛型使用

泛型类

public class FX<A,B,C>{
	private A name;
	private B age;
	private C sex;
	public FX(){
	}
	public FX(A name,B age, C sex){
		this.name=name;
		this.age=age;
		this.sex=sex;
	}
	get
	set
	toString
}

泛型就是自定义的数据类型,当使用当前泛型实体类时,自己设置数据类型,默认都为Object

泛型方法

public class FX(){
	public void test(){
        
    }
    //泛型方法
    public <E> void test1(E e){
        System.out.println(e);
    }
    //静态泛型方法
    public static <E> void test2(E e){
        System.out.plintln(e)
    }
}

泛型接口

public interface FXFace<E>{
	void test(E e);
}

实现泛型接口

实现泛型接口时要先定义泛型类型,否则默认Object

public class FX implements FXFace<String>{
	void test(String e){
		System.out.println(e)
	}
}
泛型的继承关系以及上下限通配符

泛型通配符”?“任何的参数类型都可以赋给它

class People{}//父类
class People1 extends People{}继承people
class people2 extends People1{}继承people1
//?只能是people和people的父类,子类不行此为下限
List<? extends People>
//?只能是people和people的子类,父类不行,此为上限
List<? super People>
泛型擦除

如果将一个具备泛型的对象赋值给不具备泛型的对象,那么泛型丢失。

ArrayList<People> peoples = new ArrayList<>();
List p = peoples;
Object o = p.get(0);

将具有泛型的Peoples赋值给没有具体泛型的的p,此时我们从p中取值,发现本来peoples具有的泛型,现在么得了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值