Java枚举(enum)

简介: Java枚举(enum)


Java 枚举(enum)

Java中的枚举类是一种特殊的类,它用于定义一组具有固定值的常量;枚举类在Java中是一种更好的替代方案,可以代替使用整数或字符串表示的固定值

public enum Day {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

内部类枚举

public class Test
{
    enum Color
    {
        RED, GREEN, BLUE;
    }
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
    }
}

迭代枚举元素

enum Color
{
    RED, GREEN, BLUE;
}
public class MyClass {
  public static void main(String[] args) {
    for (Color myVar : Color.values()) {
      System.out.println(myVar);
    }
  }
}

switch 中使用枚举类

enum Color
{
    RED, GREEN, BLUE;
}
public class MyClass {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;
    switch(myVar) {
      case RED:
        System.out.println("红色");
        break;
      case GREEN:
         System.out.println("绿色");
        break;
      case BLUE:
        System.out.println("蓝色");
        break;
    }
  }
}

枚举类方法

  • values() :返回枚举类中所有的值
  • ordinal():找到每个枚举常量的索引,像数组索引一样
  • valueOf():返回指定字符串值的枚举常量
enum Color
{
    RED, GREEN, BLUE;
}
public class Test
{
    public static void main(String[] args)
    {
        // 调用 values()
        Color[] arr = Color.values();
        // 迭代枚举
        for (Color col : arr)
        {
            // 查看索引
            System.out.println(col + " at index " + col.ordinal());
        }
        // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
        // System.out.println(Color.valueOf("WHITE"));
    }
}

枚举类成员

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用

枚举既可以包含具体方法,也可以包含抽象方法;如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它

enum Color
{
    RED, GREEN, BLUE;
    // 构造函数
    private Color()
    {
        System.out.println("Constructor called for : " + this.toString());
    }
    public void colorInfo()
    {
        System.out.println("Universal Color");
    }
}
public class Test
{    
    // 输出
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        System.out.println(c1);
        c1.colorInfo();
    }
}

Java 泛型(Generics)

Java中的泛型(Generics)是一种在编译时提供类型安全的机制,允许在定义类、接口或方法时使用参数化类型

泛型方法

  • 定义泛型方法:在方法的返回类型之前使用尖括号<>来声明一个或多个类型参数;例如,<T>表示一个泛型方法,其中的T是类型参数
  • 使用类型参数:在方法的参数列表、返回类型或方法体中可以使用类型参数;类型参数可以用作参数的类型、返回类型或局部变量的类型
  • 类型推断:Java编译器通常可以根据上下文推断泛型方法的类型参数。这意味着在某些情况下,可以省略类型参数的显式声明
  • E - Element (在集合中使用,因为集合中存放的是元素)
  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  • - 表示不确定的 Java 类型
public class GenericMethodExample {
    public static <T> boolean isEqual(T obj1, T obj2) {
        return obj1.equals(obj2);
    }
    public static void main(String[] args) {
        String str1 = "Hello";
        String str2 = "Hello";
        boolean isEqualStrings = isEqual(str1, str2);
        System.out.println("Are the strings equal? " + isEqualStrings);
        Integer num1 = 10;
        Integer num2 = 20;
        boolean isEqualNumbers = isEqual(num1, num2);
        System.out.println("Are the numbers equal? " + isEqualNumbers);
    }
}

泛型类

泛型类(Generic Class)指在类定义中使用泛型类型参数的类;它可以接受不同类型的参数化类型,并在类内部使用这些参数化类型来定义字段、方法和其他成员

public class Pair<T, U> {
    private T first;
    private U second;
    public Pair(T first, U second) {
        this.first = first;
        this.second = second;
    }
    public T getFirst() {
        return first;
    }
    public U getSecond() {
        return second;
    }
    public void setFirst(T first) {
        this.first = first;
    }
    public void setSecond(U second) {
        this.second = second;
    }
    public static void main(String[] args) {
        Pair<String, Integer> pair1 = new Pair<>("Hello", 42);
        System.out.println("First: " + pair1.getFirst());
        System.out.println("Second: " + pair1.getSecond());
        Pair<Double, String> pair2 = new Pair<>(3.14, "World");
        System.out.println("First: " + pair2.getFirst());
        System.out.println("Second: " + pair2.getSecond());
    }
}

类型通配符

类型通配符(Wildcard)是Java泛型中的一种特殊语法,用于表示未知类型或限定类型范围;通配符使用?符号表示,并可以与泛型类、泛型方法和通配符上限等结合使用

import java.util.ArrayList;
import java.util.List;
public class TypeWildcardExample {
    public static void printList(List<?> list) {
        for (Object item : list) {
            System.out.print(item + " ");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        List<Integer> integerList = new ArrayList<>();
        integerList.add(1);
        integerList.add(2);
        integerList.add(3);
        List<String> stringList = new ArrayList<>();
        stringList.add("Hello");
        stringList.add("World");
        System.out.println("Printing integerList:");
        printList(integerList);
        System.out.println("Printing stringList:");
        printList(stringList);
    }
}

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


目录
相关文章
|
1月前
|
安全 Java
Java 枚举(Enums)解析:提高代码可读性与易维护性
在 Java 中,实现抽象的另一种方式是使用接口。 接口定义 接口是一个完全抽象的类,用于将具有空方法体的相关方法分组:
71 1
|
2月前
|
存储 安全 Java
解密 Java 枚举的奥秘:超越常量的选择
解密 Java 枚举的奥秘:超越常量的选择
33 0
|
3月前
|
开发框架 Java 编译器
Java反射,枚举讲解
Java反射,枚举讲解
43 0
|
5月前
|
Kubernetes 数据可视化 安全
枚举探秘:Java中的神奇力量!
枚举探秘:Java中的神奇力量!
|
7天前
|
安全 Java 编译器
Java基础教程(14)-Java中的枚举类,泛型和注解
【4月更文挑战第14天】枚举类型(enum)是固定常量集合,Java中用`enum`定义。特点包括:使用enum关键字,定义类型名和值,可独立或嵌入定义,可实现接口,定义变量和方法。枚举在switch语句中适用,每个枚举值在JVM中唯一,不能继承Enum类。
|
8天前
|
Java
Java枚举与Switch
Java枚举与Switch
9 0
|
20天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
10 0
|
1月前
|
Java
JAVA枚举
JAVA枚举
12 1
|
2月前
|
Java
Java枚举简述
Java枚举简述
15 0
|
4月前
|
存储 安全 Java
【Java 枚举】详细介绍枚举的作用以及适用范围
【Java 枚举】详细介绍枚举的作用以及适用范围