泛型编程》》》》》》》》》》》》》》

来源:互联网 发布:广场舞大全软件 编辑:程序博客网 时间:2024/05/23 14:49

泛型,类型参数,,,,使得类可以参数化。。。不过泛型只是给编译器看的。。运行的时候没有任何类型信息了!

 

方便我们尽可能少去强制类型转换。。。。。使用不同参数化的某个类型的多个实例,,实际上用的是同一份字节码。。

 

所以我们可以通过反射绕过编译器的类型检测。。因为在运行时,,已经去掉了类型信息!

 

参数化的类型,,不考虑继承关系!!!

 

?号通配符,可以使之可以引用任何参数化得类型。。?通配符的主要作用就是引用。。。。引用后可以调用于类型参数无关的方法,,,于类型参数有关的方法不能调用。

 

向上限定符--------》》》<? extends Number>

向下限定符--------》》》<? super Numbers>

以及继承并实现了那个类得类型或实现两两个接口得类型,,,---------》》<? extends Runnable&Closeable>

 

 

 

 

在调用泛型方法时,编译器会进行非常复杂的一个类型推断操作,,

 

如果指定的类型变量,在参数列表和返回值中只有一处被应用了,那么只通过调用时给的实际类型来推断它的类型。

 

如果指定的类型变量,在参数列表和返回值中有多处被应用了,但是调用时都是给的同一种类型,这个类型推断也非常简单。

 

如果指定的类型变量,在参数列表和返回值中有多处被应用了,调用时给了多种类型对应到不同的类型变量,且没有返回值的时候,这时类型推断出这几个不同参数类型的最大交集类型。

 

同上一种情况,如果有返回值,那么编译器将优先考虑返回值的类型。。。。

 

 

通过反射可以获得参数化得类型变量是的实际类型。。。。

 

 

 

原创粉丝点击