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

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值