java 泛型 下限_java 泛型的上限与下限

设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类:

声明对象:类名 extends 类> 对象名

定义类:类名{}

设置泛型对象的下限使用super,表示参数类型只能是该类型或该类型的父类:

声明对象:类名 super 类> 对象名称

定义类:类名{}

public static void  show(List extends Number> l){

}

public static void  show(List super String> l){

}

public static void show(List extends Number> l){}

public static void show(List super String> l){}

泛型的上限

public static void main(String[] args) {

Person p1 = new Person<>();

p1.setVal(99);

Person p2 = new Person<>();

p2.setVal(3.14);

Person p3 = new Person<>();

p3.setVal("007");

show(p1);//√

show(p2);//√

show(p3);//×

}

public static void show(Person extends Number> p){//此处限定了Person的参数类型只能是Number或者是其子类,而String并不属于Number。

System.out.println(p.getVal());

}

泛型的下限

public static void main(String[] args) {

Person p1 = new Person<>();

p1.setVal(99);//Integer

Person p2 = new Person<>();

p2.setVal(3.14);//Double

Person p3 = new Person<>();

p3.setVal("007");//String

Person p4 = new Person<>();

p4.setVal(new Object());//Object

show(p1);//×

show(p2);//×

show(p3);//√

show(p4);//√

}

public static void show(Person super String> p){

System.out.println(p.getVal());

}

很好的例子!

package generic;

import java.util.ArrayList;

import java.util.List;

public class GenericDemo3 {

public static void main(String[] args) {

//因为show方法是用List>通配符接收的,所以可以是任意类型!

List l1 = new ArrayList<>();//new ArrayList()

show(l1);

List l2 = new ArrayList<>();

show(l2);

List l3 = new ArrayList<>();

show(l3);

List l4 = new ArrayList<>();

show(l4);

//使用up方法的话接收类型为Number或者其子类

//up(l1);//错误,因为up方法接收类型为Number或者其子类,l1(String)不符合!

up(l2);

up(l3);

//使用down方法的话接收类型为Number或者其父类

//down(l2);error

down(l3);

down(l4);

}

public static void down(List super Number> l){

for (Object object : l) {

System.out.println(object);

}

}

public static void up(List extends Number> l){

for (Object object : l) {

System.out.println(object);

}

}

public static void show(List> l){

for (Object object : l) {

System.out.println(object);

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值