【ThinkingInJava】41、捕获转换

来源:互联网 发布:淘宝20万店铺数据下载 编辑:程序博客网 时间:2024/06/02 15:01
/*** 书本:《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);//传入的类型是Integerf1(raw);  //有警告 ,直接调用的f1,返回Integerf2(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




0 0
原创粉丝点击