【ThinkingInJava】41、捕获转换

本文介绍Java中泛型的捕获转换概念,通过具体示例演示如何在不同泛型参数间进行转换,并展示了捕获转换如何使得泛型方法能够接受更广泛的参数类型。
/**
* 书本:《Thinking In Java》
* 功能:捕获转换
* 文件:CaptureConversion.java
* 时间:2015年5月19日07:52:43
* 作者:cutter_point
*/
package Lesson15_generices;

public class CaptureConversion
{
	static <T> void f1(Holder<T> holder)
	{
		System.out.println("This is f1()");
		T t = holder.get();	//这个就是得到holder的值,也就是T类型的值
		System.out.println(t.getClass().getSimpleName()); //得到类型名
	}
	
	static void f2(Holder<?> holder)	//由于f1需要一个确切的参数,但是f2的参数看起来不是确切的,但是f2调用了f1,所以参数类型在f2调用f1的时候被捕获了
	{
		System.out.println("这里是f2");
		f1(holder);		//调用f1
	}

	public static void main(String[] args)
	{
		Holder raw = new Holder<Integer>(1);	//传入的类型是Integer
		f1(raw);  //有警告 ,直接调用的f1,返回Integer
		f2(raw); 	//这个没有警告,返回同上
		Holder rawBasic = new Holder();
		rawBasic.set(new Object());  //警告
		f1(rawBasic);
		f2(rawBasic);
		Holder<?> wc = new Holder<Double>(1.0);
		f2(wc);
	}
}


输出:

This is f1()
Integer
这里是f2
This is f1()
Integer
This is f1()
Object
这里是f2
This is f1()
Object
这里是f2
This is f1()
Double




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值