泛型(泛型类、泛型方法)

泛型

泛型指的就是一种类型,泛型一般都跟<>使用,例如< String>,就代表这是String类型的,一般联合集合使用List< Student>代表Student类型的集合

泛型类

//注意这里PPP只是相当于一个"形参"在外界可以给PPP任何一个类型
public class generic<PPP> {
	PPP p;


//来一个有参构造,给需要传递一个类型,在外界,可以传任何类型,Student类,worker类
	public generic(PPP p) {
		super();
		this.p = p;           //将p赋值为外界传来的对象
	}

//需要注意的是:虽然p是外界传进来的对象,但这个对象的方法是调用不到的,只能使用
//所有类的父类Object里的方法
	public void showEat() {
		System.out.println(p.toString());
	}

}

泛型方法

public class GenericityMethod {

	// 这就是泛型方法的书写格式,当外界调用这个方法时,
	// 可以传进来任何类型的对象

	public <PPP> void run(PPP p) {
		System.out.println(p.toString());
	}

	public static void main(String[] args) {
		GenericityMethod g = new GenericityMethod();
		// 在本包的创建了两个类
		Student s = new Student();
		Worker w = new Worker();
		// PPP只是一个形式,就是告诉你,想要调用这个方法就要
		// 传递进来一个对象,什么对象都行
		g.run(s);
		g.run(w);
	}
}

注意:这里需要和多态进行一个区别,这俩都是可以传递进来一个不同的对象,需要主要的是多态传进的对象可以调用这个对象的方法,而泛型方法传进来的对象是不能调用这个对象的方法的,只能调用所有父类Object类的方法!!!!!

泛型通配符

对于一个泛型类,为了规范可传入的类型这产生了一个泛型通配符
来一个泛型类

public class generic<PPP> {
	PPP p;

	public generic(PPP p) {
		super();
		this.p = p;
	}

	public void showEat() {
		System.out.println(p.toString());
	}

}

这里还有一个Person父类,以及Person的两个子类就不写了

public class GenericityMethod {

	// 这就是泛型方法的书写格式,当外界调用这个方法时,
	// 可以传进来任何类型的对象

	
	
	//这里?代表所有的意思
	//? extends Person    所有继承Person的子类 
	
	//则这个泛型类只有继承Person的子类可以将对象传递不去
	//不在是没有通配符时所有的对象都可以传递进去
	public void run(generic<? extends Person> p) {
		p.showEat();
	}

	public static void main(String[] args) {
		GenericityMethod g = new GenericityMethod();
		Worker w = new Worker();
		Student s = new Student();
		generic<Worker> gt = new generic<Worker>(w);
		generic<Student> gt2 = new generic<Student>(s);
		g.run(gt);
		g.run(gt2);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值