泛型限定

泛型的限定:
? extends E:接收E类型或者E的子类型。

?super E:接收E类型或者E的父类型。


定义T只能固定一种类型,定义?可以是任意类型。只想操作Person或者Person的子类类型。
使用泛型的限定。? extends E:接收E类型或者E的子类型
.

import java.util.*;
class Person
{
private String name;
Person(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}


class Student extends Person
{
Student(String name)
{
super(name);
}
}


class  GenericDemo7
{
public static void main(String[] args) 
{
ArrayList<Person> al = new ArrayList<Person>();


al.add(new Person("p1"));
al.add(new Person("p2"));
al.add(new Person("p3"));
show(al);


ArrayList<Student> al1 = new ArrayList<Student>();


al1.add(new Student("s1"));
al1.add(new Student("s2"));
al1.add(new Student("s3"));


show(al1);

//定义集合要保证左右两边的类型一致。
//两边只有一边定义泛型,也是可以支持,至少新老版本兼容。但是一样会出现,安全提示信息。

}

//传入的集合有一个特点,就是元素类型,要么是Person,要么是Person的子类型。
//这时可以使用泛型的高级应用,泛型的限定。


public static void show(Collection<? extends Person> coll)
{
Iterator<? extends Person> it = coll.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());     //在泛型方法中,不可以使用具体类型的方法,最多只能使用Object类中方法。
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web魔法师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值