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

    }

}

 

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