前言
本文不是对泛型的系统介绍,也不打算对其进行入门讲解,只是对遇到的一些泛型场景的补充。看过宋红康和韩顺平的javase课程可以花几分钟看看。
1.&符号在泛型中的使用,用来描述有边界的受约束泛型
java
class A{}
interface B{}
public class C< T extends A & B>{}
这里的泛型类型受到约束,既要是A的子类,也要实现B的接口。注意虽然B是接口但是泛型仍要用关键字extends,并且写在A的右边。
2.泛型方法中的泛型参数在方法被调用时确定。常见形参位置带有泛型,然后根据传入实参确定,不再详叙。还有一种少见的情况是根据引用类型来确定的,需要注意。
java
public class Testing {
//
public <T> T generic(){
String s1 = "generic";
return (T)s1;
}
@Test
public void test2(){
ReflectionTest r1 = new ReflectionTest();
String s1 = r1.generic();
Sort s2 = r1.generic();
}
}
这里强转成什么类型是由String s1或Sort s2决定的,此时才决定泛型类型。
返回值本身是String类,所以第一次调用不报错,第二次调用报错。
3.泛型通配符的读写情况
待更新