Java基础遨游Java 泛型海洋

1,010 阅读4分钟

这是我参与8月更文挑战的第19天,活动详情查看:8月更文挑战

收录专栏

Spring Boot 快速入门

Java全栈架构师

前言

  有时候在项目开发过程中,很多可以使用复用的部分。在接下来讲解的泛型泛型进行相对于传统上的形参,可以使我们的参数具有更多类型上的变化,使代码能更好地复用。

什么是泛型?

  泛型,即“参数化类型”,在面向对象编程及各种设计模式中有非常广泛的应用。Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

为什么要使用泛型?

  操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。一些强类型程序语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的程序语言只能达到部分目的。

泛型类

泛型类的规则

  • 泛型类在类名后面添加了类型参数声明部分。
  • 泛型类的类型参数声明部分可以是一个或多个类型参数,参数间用逗号隔开。

泛型类的格式

class GenericsTest<T> {

    private T t;

    public void add(T t) {
        this.t = t;
    }

    public T getTest() {
        return t;
    }

}

泛型接口

  定义一个泛型接口   在实现泛型的接口未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需将泛型的声明也一起加到类中。

public interface Map<K,V> {
    
}

泛型方法

  泛型方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

泛型方法的规则

  泛型方法的规则如下:

  • 所有泛型方法声明都有一个由尖括号分隔类型参数声明部分,该类型参数声明部分在方法返回类型之前。
  • 类型参数声明部分可以是一个或多个类型参数,参数间用逗号隔开。
  • 类型参数能被用来声明返回值类型,并且能作为泛型方法得到的实际参数类型的占位符。
  • 类型参数只能代表引用型类型。

泛型方法格式

  泛型方法格式如下

    // 泛型方法                         
   public static < E > void testMethod( E e ){
        // 逻辑处理        
        System.out.println(e);
    }

  下面用一个简单的示例进行介绍。其中printInfo()是一个泛型的方法,其功能是接收到数组参数之后,输出数组的类型,然后将数组中的元素进行按顺序输出到控制台。 其中进行了三个数据类型的数组,分别是int、double、character。 都初始化好之后,调用泛型方法printInfo()输出数组元素。

 public static void main(String[] args) {
        Integer[] intArray = { 1, 2, 3, 4, 5 ,6 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { 'J', 'u', 'E', 'J', 'I', 'N' };
        printInfo(intArray);
        printInfo(doubleArray);
        printInfo(charArray);
    }

    public static <E> void printInfo(E[] e){
        System.out.println(e.getClass().getTypeName());
        for(E e1 :e){
            System.out.println(e1);
        }
    }

  调用泛型方法printInfo()输出数组元素。输出结果如下: 图片.png

  作者介绍:【小阿杰】一个爱鼓捣的程序猿,JAVA开发者和爱好者。公众号【Java全栈架构师】维护者,欢迎关注阅读交流。

  好了,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎点赞收藏。如有不足之处,欢迎评论指正。下次见。

推荐阅读:

【Spring Boot 快速入门】一、我的第一个Spring Boot项目启动啦!

【Spring Boot 快速入门】二、周末建立了Spring Boot专栏,欢迎学习交流

【Spring Boot 快速入门】三、Spring Boot集成MyBatis,可以连接数据库啦!

【Spring Boot 快速入门】四、Spring Boot集成JUnit

【Spring Boot 快速入门】五、Spring Boot集成Swagger UI

【Spring Boot 快速入门】六、Spring Boot集成Lombok

【Spring Boot 快速入门】七、Spring Boot集成Redis

【Spring Boot 快速入门】八、Spring Boot集成RabbitMQ

【Spring Boot 快速入门】九、Spring Boot集成MyBatis-Plus