java 泛型的應用及注意事項

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);

    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章