聊一聊Java中的枚举和泛型(两种强大的编程特性)

聊一聊Java中的枚举和泛型(两种强大的编程特性)

在这里插入图片描述
保持热爱,奔赴山海。。。。。。

Java中的枚举

在Java中,枚举(Enum)是一种特殊的数据类型,用于定义包含固定常量集合的数据类型。枚举类型在Java中引入了更强大、更类型安全的常量集合,提高了代码的可读性和可维护性。

以下是关于Java中枚举的一些基本概念和用法:

1. 定义枚举类型

要定义一个枚举类型,可以使用 enum 关键字:

enum Days {
    
    
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

2. 枚举常量

枚举常量是枚举类型的具体值。在上面的例子中,SUNDAY, MONDAY, 等就是 Days 枚举的常量。

3. 枚举方法

枚举类型可以包含方法,以便对枚举常量执行特定操作。每个枚举常量都是枚举类型的实例,并且可以有自己的属性和方法。例如:

enum Days {
    
    
    SUNDAY("Sun"), MONDAY("Mon"), TUESDAY("Tue"), WEDNESDAY("Wed"),
    THURSDAY("Thu"), FRIDAY("Fri"), SATURDAY("Sat");

    private String abbreviation;

    // 构造方法
    private Days(String abbreviation) {
    
    
        this.abbreviation = abbreviation;
    }

    // 获取缩写
    public String getAbbreviation() {
    
    
        return abbreviation;
    }
}

4. Switch 语句中使用枚举

枚举类型非常适合在 switch 语句中使用,使得代码更为清晰和易读:

Days day = Days.MONDAY;

switch (day) {
    
    
    case SUNDAY:
        System.out.println("It's a relaxing day!");
        break;
    case MONDAY:
        System.out.println("Back to work!");
        break;
    // 其他枚举常量的处理...
    default:
        System.out.println("Enjoy the day!");
}

5. 枚举的遍历

可以使用 values() 方法获取枚举类型中所有的常量,并进行遍历:

for (Days day : Days.values()) {
    
    
    System.out.println(day);
}

6. 枚举实现接口

枚举类型也可以实现接口,为每个枚举常量提供不同的行为。

interface DayInfo {
    
    
    String getInfo();
}

enum Days implements DayInfo {
    
    
    SUNDAY("Sun"), MONDAY("Mon"), TUESDAY("Tue"), WEDNESDAY("Wed"),
    THURSDAY("Thu"), FRIDAY("Fri"), SATURDAY("Sat");

    private String abbreviation;

    // 构造方法
    private Days(String abbreviation) {
    
    
        this.abbreviation = abbreviation;
    }

    // 获取缩写
    public String getAbbreviation() {
    
    
        return abbreviation;
    }

    // 实现接口方法
    @Override
    public String getInfo() {
    
    
        return "This day is " + name() + " (" + getAbbreviation() + ")";
    }
}

这是关于Java中枚举的一些基本概念和用法。枚举是一种强大而灵活的工具,可以用于增强代码的可读性和可维护性。

Java中的泛型

Java 中的泛型是一种强大的编程特性,允许你编写可以适用于多种数据类型的通用代码,提高了代码的可重用性和类型安全性。泛型在集合类、方法和类中广泛应用,使得代码更加灵活和类型安全。

以下是一些关于 Java 泛型的基本概念和用法:

1. 泛型类

使用泛型可以创建具有通用数据类型的类。例如,下面是一个简单的泛型类:

public class Box<T> {
    
    
    private T value;

    public Box(T value) {
    
    
        this.value = value;
    }

    public T getValue() {
    
    
        return value;
    }
}

在这个例子中,Box 类是一个泛型类,使用 <T> 表示类型参数。通过这个参数,可以在实例化 Box 对象时指定具体的数据类型:

Box<Integer> intBox = new Box<>(42);
Box<String> strBox = new Box<>("Hello, Generics!");

Integer intValue = intBox.getValue();
String strValue = strBox.getValue();

2. 泛型方法

除了泛型类,还可以在方法中使用泛型。例如,下面是一个简单的泛型方法:

public class GenericMethods {
    
    
    public static <T> void printArray(T[] array) {
    
    
        for (T element : array) {
    
    
            System.out.print(element + " ");
        }
        System.out.println();
    }
}

这个方法可以打印任意类型的数组。调用时,编译器会根据传递的参数类型进行类型推断:

Integer[] intArray = {
    
    1, 2, 3, 4, 5};
String[] strArray = {
    
    "apple", "banana", "orange"};

GenericMethods.printArray(intArray);  // 输出: 1 2 3 4 5
GenericMethods.printArray(strArray);  // 输出: apple banana orange

3. 通配符

通配符是一种用于表示未知类型的符号。在泛型中,通配符通常用 ? 表示。例如,List<?> 表示一个元素类型未知的列表:

List<?> unknownList;

通配符也可以用于上界和下界。例如,List<? extends Number> 表示一个元素类型是 Number 或其子类的列表,而 List<? super Integer> 表示一个元素类型是 Integer 或其父类的列表。

4. 泛型限定

泛型可以使用限定来指定泛型的边界。通常有两种限定:上界限定和下界限定。上界限定使用 extends 关键字,下界限定使用 super 关键字。

// 上界限定:T 可以是 Number 或其子类
public <T extends Number> void processNumber(T number) {
    
    
    // 处理 T 类型的数据
}

// 下界限定:T 可以是 Integer 或其父类
public <T super Integer> void processInteger(T number) {
    
    
    // 处理 T 类型的数据
}

这些是 Java 中泛型的一些基本概念和用法。泛型是一种强大的工具,可以提高代码的可读性和灵活性,并在编译时提供更好的类型检查。

猜你喜欢

转载自blog.csdn.net/weixin_53742691/article/details/134857032