Java基础遨游Java 泛型海洋

简介: 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()输出数组元素。输出结果如下:

image.png

目录
相关文章
|
4月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
91 2
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
3月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
95 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
3月前
|
Java API
[Java]泛型
本文详细介绍了Java泛型的相关概念和使用方法,包括类型判断、继承泛型类或实现泛型接口、泛型通配符、泛型方法、泛型上下边界、静态方法中使用泛型等内容。作者通过多个示例和测试代码,深入浅出地解释了泛型的原理和应用场景,帮助读者更好地理解和掌握Java泛型的使用技巧。文章还探讨了一些常见的疑惑和误区,如泛型擦除和基本数据类型数组的使用限制。最后,作者强调了泛型在实际开发中的重要性和应用价值。
63 0
[Java]泛型
|
4月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
503 37
|
3月前
|
存储 安全 Java
🌱Java零基础 - 泛型详解
【10月更文挑战第7天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
23 1
|
4月前
|
Java 编译器 容器
Java——包装类和泛型
包装类是Java中一种特殊类,用于将基本数据类型(如 `int`、`double`、`char` 等)封装成对象。这样做可以利用对象的特性和方法。Java 提供了八种基本数据类型的包装类:`Integer` (`int`)、`Double` (`double`)、`Byte` (`byte`)、`Short` (`short`)、`Long` (`long`)、`Float` (`float`)、`Character` (`char`) 和 `Boolean` (`boolean`)。包装类可以通过 `valueOf()` 方法或自动装箱/拆箱机制创建。
48 9
Java——包装类和泛型
|
3月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
32 1
|
3月前
|
Java 语音技术 容器
java数据结构泛型
java数据结构泛型
33 5
|
3月前
|
存储 Java 编译器
Java集合定义其泛型
Java集合定义其泛型
22 1