通配符

当我们在编程的时候经常会用到传递,当传递过程中有多种数据类型的时候,我们可以采用通配符来解决这样的问题。
下面的程序中的fun方法中 <?>可以接收任何类型的泛型类型,那么在传递的过程中就不用担心数据传递异常的情况。

class Info<T>{
 private T var;
 public void setName(T var){
  this.var = var;
 }
 public T getName(){
  return this.var;
 }
 public String toString(){
  return this.var.toString();
 }
}
public class GenericsDemo3 {
public static void main(String[] args) {
 Info<String> i1 = new Info<String>();
 i1.setName("张三");
 fun(i1);
 
}
 public static void fun(Info<?> temp){
 System.out.println(temp);
}
}

泛型可以指定接收的上限和下限
确定泛型的接收上限用extends + 类名的方法
确定泛型的接收下限用super + 类名的方法

泛型的上限确定:
class Info2<T>{
 private T var;
 public void setName(T var){
  this.var = var;
 }
 public T getName(){
  return this.var;
 }
 public String toString(){
  return this.var.toString();
 }
}
public class GenericsDemo4 {
public static void main(String[] args) {
 Info2<Integer> i1 = new Info2<Integer>();
 i1.setName(10);
 fun(i1);
 
}
 public static void fun(Info2<? extends Number> temp){
 System.out.println(temp);
}
}
设置下限:
public static void fun(Info2 <? super String> temp){};

说明:
1.在设置泛型的上下限的过程中需要注意的就是在传递的时候的类型是不是在设置的范围内;
 如果设置的上限为Number,则只能接收Integer、Float类型的数据类型
 如果设置的下限为 String,则只能接收Sting或者Object类型的数据类型
2.虽然在多态中String是Object类型的子类,可以继承并且使用父类的所有方法,但是在泛型中却不是这样
 即Info<String> 不能用Info<Object>来接收数据,他们是两个不同的概念,因为String的范围要比Object小。

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值