Java基础遨游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()输出数组元素。输出结果如下:

Java基础遨游Java 泛型海洋

上一篇:30_Bootstrap组件_巨幕,页头,缩略图|学习笔记


下一篇:Python3入门机器学习 - 决策树