【JavaSE专栏19】谈谈泛型和枚举的那些事

简介: 【JavaSE专栏19】谈谈泛型和枚举的那些事

Java 的泛型和枚举是用于提升代码质量而存在的,本文讲解 Java 中的泛型和枚举的语法和使用场景。

一、Java 泛型

Java 泛型是一种在编译时指定类型的机制,它可以在类、接口或方法中使用类型参数,从而使得代码能够处理多种数据类型,并在编译期间进行类型检查以保证类型安全。

以下是一个简单的 Java 泛型示例代码。

public class GenericClass<T> {
    private T data;
    public GenericClass(T data) {
        this.data = data;
    }
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
}
public class Main {
    public static void main(String[] args) {
        // 创建一个存放整数的泛型对象
        GenericClass<Integer> intGeneric = new GenericClass<>(10);
        int intValue = intGeneric.getData();
        System.out.println("Integer value: " + intValue);
        // 创建一个存放字符串的泛型对象
        GenericClass<String> stringGeneric = new GenericClass<>("Hello");
        String stringValue = stringGeneric.getData();
        System.out.println("String value: " + stringValue);
    }
}

在上面的示例中,我们定义了一个泛型类 GenericClass,通过 <T> 在类名后声明了一个类型参数。该类包含一个泛型字段和相应的 gettersetter 方法。在 Main 类中的 main 方法中,我们分别创建了一个存放整数和字符串的泛型对象,并演示了如何获取和设置其数据。

通过使用泛型,在实例化 GenericClass 对象时可以指定具体的数据类型,这样我们就可以在编写代码时,针对不同的数据类型进行操作,同时编译器会进行类型检查以确保类型安全

二、Java 枚举

在 Java 中,枚举是一种特殊的数据类型,用于定义固定数量的常量集合。它可以用于表示一组相关的常量,比如 星期几颜色等。

以下是一个示例Java枚举的代码。

public class EnumExample {
    // 定义一个枚举类型Season
    enum Season {
        SPRING,
        SUMMER,
        AUTUMN,
        WINTER
    }
  public static void main(String[] args) {
        // 使用枚举常量
        Season currentSeason = Season.SPRING;
        System.out.println("当前季节是:" + currentSeason);
        // 遍历枚举常量
        System.out.println("所有季节:");
        for (Season season : Season.values()) {
            System.out.println(season);
        }
    }
}

在上述代码中,我们定义了一个名为 Season 的枚举类型,它包含了四个常量:SPRINGSUMMERAUTUMNWINTER。在 main 方法中,我们创建了一个名为 currentSeason 的变量,并将其赋值为 Season.SPRING,然后打印出当前季节。

接着,我们使用 Season.values() 方法遍历了所有的枚举常量,并将它们打印出来。

请注意,枚举类型名称通常采用大写字母形式,枚举常量则采用全大写字母形式

三、泛型和枚举的区别和使用场景

3.1 区别

泛型枚举是两种在编程中常用的概念。

泛型是一种允许在定义类、方法或接口时使用参数化类型的机制。它可以使代码更加通用和灵活,不限定具体的数据类型,而是在使用时动态指定。通过泛型,我们可以编写出可以适用于多种数据类型的类或方法,并在编译期间进行类型检查,避免了类型转换带来的错误。泛型的使用场景包括但不限于:集合类(如List、Set、Map)的使用、自定义数据结构、算法等。

枚举是一种特殊的数据类型,用于表示一组固定的值。它可以列举出所有可能的取值,并将这些取值作为一个独立的类型存在。枚举类型通常用于定义一组相关的常量,比如星期几、颜色等。枚举的使用场景包括但不限于:状态机、有限集合、替代常量等。


  1. 泛型是一种参数化的类型机制,能够在代码中处理不同类型的数据;而枚举是一种特定的数据类型,用于表示一组固定的取值。
  2. 泛型是在编写类、方法或接口时使用的,用于增加代码的通用性和灵活性;而枚举是一种独立的类型,在需要表示一组相关常量时使用。
  3. 泛型可以处理不同类型的数据,提高代码的重用性;而枚举只能表示预定义的取值,不具备处理不同类型数据的能力。

综上所述,泛型适用于需要处理多种数据类型的场景,而枚举适用于表示一组固定取值的场景,它们在编程中都有各自的应用价值,根据具体情况选择合适的机制来实现需求。


四、总结

本文简单对 Java 的泛型和枚举进行了介绍,讲解了如何在实际业务中使用 Java 的泛型和枚举,并给出了 Java 样例代码。在下一篇博客中,将讲解 Java 中的正则表达式规则和使用方式。

相关文章
|
9月前
十二 泛型
十二 泛型
25 0
|
9月前
|
Java 编译器 API
Java数据结构之第二章包装类&初识泛型
可以看到在使用过程中,装箱和拆箱带来不少的代码量,所以为了减少开发者的负担,java 提供了自动机制int num=10;//自动装箱//手动装箱//拆箱操作:将 Integer 对象中的值取出,放到一个基本数据类型中//自动拆箱1.3.2【面试题】//内部自动调用valueOf方法为什么分别输出true和false呢?接下来我们看看内部的源码:由于a和b在-128~127的范围内,所以返回cashe[127+(-128)]=cashe[-1];
33 0
|
9月前
|
存储 Java
Java数据结构之第十四章、泛型进阶
Java数据结构之第十四章、泛型进阶
58 0
|
9月前
|
存储 SQL 安全
教你精通JavaSE语法之第七章、类和对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好!一切皆为对象!面向对象程序设计关注的是对象,而对象是现实生活中的实体,比如:洗衣机。但是洗衣机计算机并不认识,需要开发人员告诉给计算机什么是洗衣机。
42 0
|
10月前
|
存储 Java 索引
【JavaSE专栏26】数组是什么?如何定义
【JavaSE专栏26】数组是什么?如何定义
|
10月前
|
IDE Java 开发工具
【JavaSE专栏33】用大白话解释Java的方法重载和方法覆盖
【JavaSE专栏33】用大白话解释Java的方法重载和方法覆盖
|
10月前
|
算法 安全 Java
【JavaSE专栏47】Java常用类Collections解析,你了解JAVA集合类的通用用法吗?
【JavaSE专栏47】Java常用类Collections解析,你了解JAVA集合类的通用用法吗?
120 2
JavaSE:第十一章:泛型
JavaSE:第十一章:泛型
JavaSE:第十一章:泛型
|
安全 Java 程序员
【JavaSE】泛型通关教程
文章目录 1 泛型引入 2 泛型讲解 2.1 泛型的介绍 2.2 泛型实例 2.3 泛型使用细节 3 自定义泛型类 4 自定义泛型接口 5 自定义泛型方法 6 泛型的继承与通配 写在最后
【JavaSE】泛型通关教程
|
安全 Java 编译器
Java泛型——简介
Java泛型——简介
70 0

热门文章

最新文章