java1.5高新知识之泛型(2)

掌握通配符?的使用
(1)匹配任意类型的通配符
在开发中对象的引用传递时最常见的 但是如果在泛型类中操作中

在进行应用传递的时候泛型类型必须匹配才可以传递,否则是无法传递的


如果将fun改成 Info<String> 就可以使用泛型了

	public static void fun(Info<String> i){		// 接收Object泛型类型的Info对象
		System.out.println("内容:" + i) ;
	}

你也可以使用通配符 但是


通配符只能接受不能修改

(2)受限泛型 

之前泛型设置泛型类型的时候,实际上都是可以任意设置的,只要类就可以设置但是在java的泛型是可以设置上限和下限的


设置上限

package KownClass;
class Info<T>{
	private T var ;		// 定义泛型变量
	public void setVar(T var){
		this.var = var ;
	}
	public T getVar(){
		return this.var ;
	}
	public String toString(){	// 直接打印
		return this.var.toString() ;
	}
};
public class GenericsDemo17{
	public static void main(String args[]){
		Info<Integer> i1 = new Info<Integer>() ;	// 声明Integer的泛型对象
		Info<Float> i2 = new Info<Float>() ;		// 声明Float的泛型对象
		i1.setVar(30) ;					// 设置整数,自动装箱
		i2.setVar(30.1f) ;				// 设置小数,自动装箱
		fun(i1) ;
		fun(i2) ;
	}
	public static void fun(Info<? extends Number> temp){	// 只能接收Number及其Number的子类
		System.out.print(temp + "、") ;
	}
};
注意点是 只能接受NUmber的子类或者number类


设置下限


但使用泛型只能在父类其父类类型上应用的时候 必须使用泛型的范围下限配置

package KownClass;
class Info<T>{
	private T var ;		// 定义泛型变量
	public void setVar(T var){
		this.var = var ;
	}
	public T getVar(){
		return this.var ;
	}
	public String toString(){	// 直接打印
		return this.var.toString() ;
	}
};
public class GenericsDemo21{
	public static void main(String args[]){
		Info<String> i1 = new Info<String>() ;	// 声明String的泛型对象
		Info<Object> i2 = new Info<Object>() ;	// 声明Object的泛型对象
		i1.setVar("hello") ;
		i2.setVar(new Object()) ;
		fun(i1) ;
		fun(i2) ;
	}
	public static void fun(Info<? super String> temp){// 只能接收String或Object类型的泛型
		System.out.print(temp + "、") ;
	}
};





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值