1、泛型指定的類型爲引用類型,不能爲基本類型;(如:Double,而不能用double)
注:如果使用了一個帶有泛型的類,但沒有指定明確的類型,則默認會使用Object描述
2、jdk1.7之後,聲明帶泛型的類時,後邊的類型可以省略
如:Point<String> point = new Point<String>();
--->Point<String> point = new Point<>();
3、通配符‘?’:標識只能夠取值,不能夠賦值;
·在使用泛型接收的時候使用通配符,可以保證參數的統一;
··在‘?’通配符的基礎上還有兩個子通配符
···? extends 類,設置泛型上限:可以在聲明類上、方法的參數上使用;
例如:? extends Number 意味着只能設置Number或者Number的子類(Integer\Double等)
···? super 類,設置泛型下限:方法參數上使用
例如:? extends String意味着只能設置String或者String的父類Object
4、泛型接口
4.1、泛型接口
public interface TestJava84<T> {
void apply(T t);
}
4.2、泛型接口的實現類
方式1
public class TestJava83Imp<T> implements TestJava84<T> {
@Override
public void apply(T t) {
System.out.println(t);
}
}
方式2:直接指定類型
public class TestJava84Imp implements TestJava84<String> {
@Override
public void apply(String t) {
System.out.println(t);
}
}
4.3、應用方式
public static void main(String[] args) {
TestJava84<String> testJava84 = new TestJava84Imp();
testJava84.apply("hello !");
}
5、泛型方法
public class TestJava8Service {
public static void main(String[] args) {
System.out.println(testJava83Method((s)->s).toString());
}
public static <T,R> R testJava83Method(TestJava83<T,R> t){
String aa = "";
Integer bb = 0;
Boolean cc = false;
return t.apply((T)bb);
}
}