Java学习之泛型

什么是泛型?

字面意思,泛型即为广泛的类型。

我们都知道,在实际的开发中,对于数据的一致性要求很高,泛型的好处就是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。

使用泛型的好处?

1、在没有泛型之前,从集合中读取到的每一个对象都必须进行类型转换,如果不小心插入了错误的类型对象,在运行时的转换处理就会出错。

2、使用泛型之后,相当于告诉编译器每个集合接收的对象类型是什么,编译器在编译期就会做类型检查,告知是否插入了错误类型的对象,使得程序更加安全,增强了程序的健壮性。

3、消除源代码中的许多强制类型转换,这增强了代码的可读性,并且减少了出错机会。

4、泛型变量固定了类型,使用的时候就已经知道是值类型还是引用类型,避免了不必要的装箱、拆箱操作。提高程序的性能

5、提高了代码的重用性

泛型的本质

泛型的本质是参数化类型:即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。泛型具有广泛性和普适性

泛型的应用

泛型可以分别在类、接口、和方法中使用。被称为泛型类,泛型接口,和泛型方法。

泛型方法:语法格式

public <无意义占位符> 返回值类型 方法名字(参数列表){
    return 返回值;
}

此处的无意义占位符,要看这个方法的传参类型,传什么就是什么。需要注意的是泛型的方法,一定是带有参数的才有意义,返回值是和参数的T 数据类型要保持一致的。

class Dog {

    public <T> void test (T t) {
        System.out.println(t);
    }
}
public class Demo3 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.test("大白花");
        dog.test(89);
        dog.test(90.8);
    }
}

泛型类:语法格式

class 类名<无意义的占位符>{  
}

注意:在带有泛型的类中,使用泛型方法,不需要在方法上加泛型标识,加了泛型标识,就不再受泛型类的类型约束。

带泛型的抽象类:语法格式

abstract class 类名<无意义的占位符>{
}

继承了泛型抽象类的普通类,必须是带有泛型的普通类

abstract class A<T> {
    abstract void testA (T t);
}
//抽象类,暂时没有办法直接实例化,只能再写一个普通类去继承抽象类
//总结:继承了带有泛型的抽象类,那么继承类也需要有泛型!!!
class TestA<T> extends A<T> {

    @Override
    void testA(T t) {
        System.out.println(t);
    }
}
public class Demo1 {
    public static void main(String[] args) {
        //是int的包装类  就是代表的是int类型的数据
        TestA<Integer> testA = new TestA<>();
        testA.testA(89);
    }
}

带有泛型的接口:语法格式

interface 接口名<无意义的占位符>{
}

实现带有泛型的接口的类,必须是带有泛型的类,否则编译报错

interface A<T>{
    void name(T t);
}
class B<T> implements A<T>{
    @Override
    public void name(Object o) {
        System.out.println(o);
    }
}
public class T2 {
    public static void main(String[] args) {
        B<String> b = new B<>();
        b.name("哈哈哈");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值