【ThinkingInJava】41、捕获转换

/*** 书本:《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这里是f2This is f1()IntegerThis is f1()Object这里是f2This is f1()Object这里是f2This is f1()Double

在人生的大海中,我们虽然不能把握风的大小,却可以调整帆的方向。

【ThinkingInJava】41、捕获转换

相关文章:

你感兴趣的文章:

标签云: