Java枚举(enum)

刺骨的言语ヽ痛彻心扉 2024-04-22 19:06 185阅读 0赞

在这里插入图片描述

?wei_shuo的个人主页

?wei_shuo的学习社区

?Hello World !


Java 枚举(enum)

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

  1. public enum Day {
  2. SUNDAY,
  3. MONDAY,
  4. TUESDAY,
  5. WEDNESDAY,
  6. THURSDAY,
  7. FRIDAY,
  8. SATURDAY
  9. }

内部类枚举

  1. public class Test
  2. {
  3. enum Color
  4. {
  5. RED, GREEN, BLUE;
  6. }
  7. // 执行输出结果
  8. public static void main(String[] args)
  9. {
  10. Color c1 = Color.RED;
  11. System.out.println(c1);
  12. }
  13. }

迭代枚举元素

  1. enum Color
  2. {
  3. RED, GREEN, BLUE;
  4. }
  5. public class MyClass {
  6. public static void main(String[] args) {
  7. for (Color myVar : Color.values()) {
  8. System.out.println(myVar);
  9. }
  10. }
  11. }

switch 中使用枚举类

  1. enum Color
  2. {
  3. RED, GREEN, BLUE;
  4. }
  5. public class MyClass {
  6. public static void main(String[] args) {
  7. Color myVar = Color.BLUE;
  8. switch(myVar) {
  9. case RED:
  10. System.out.println("红色");
  11. break;
  12. case GREEN:
  13. System.out.println("绿色");
  14. break;
  15. case BLUE:
  16. System.out.println("蓝色");
  17. break;
  18. }
  19. }
  20. }

枚举类方法

  • values() :返回枚举类中所有的值
  • ordinal():找到每个枚举常量的索引,像数组索引一样
  • valueOf():返回指定字符串值的枚举常量
  1. enum Color
  2. {
  3. RED, GREEN, BLUE;
  4. }
  5. public class Test
  6. {
  7. public static void main(String[] args)
  8. {
  9. // 调用 values()
  10. Color[] arr = Color.values();
  11. // 迭代枚举
  12. for (Color col : arr)
  13. {
  14. // 查看索引
  15. System.out.println(col + " at index " + col.ordinal());
  16. }
  17. // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
  18. System.out.println(Color.valueOf("RED"));
  19. // System.out.println(Color.valueOf("WHITE"));
  20. }
  21. }

枚举类成员

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

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

  1. enum Color
  2. {
  3. RED, GREEN, BLUE;
  4. // 构造函数
  5. private Color()
  6. {
  7. System.out.println("Constructor called for : " + this.toString());
  8. }
  9. public void colorInfo()
  10. {
  11. System.out.println("Universal Color");
  12. }
  13. }
  14. public class Test
  15. {
  16. // 输出
  17. public static void main(String[] args)
  18. {
  19. Color c1 = Color.RED;
  20. System.out.println(c1);
  21. c1.colorInfo();
  22. }
  23. }

Java 泛型(Generics)

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

泛型方法

  • 定义泛型方法:在方法的返回类型之前使用尖括号<>来声明一个或多个类型参数;例如,<T>表示一个泛型方法,其中的T是类型参数
  • 使用类型参数:在方法的参数列表、返回类型或方法体中可以使用类型参数;类型参数可以用作参数的类型、返回类型或局部变量的类型
  • 类型推断:Java编译器通常可以根据上下文推断泛型方法的类型参数。这意味着在某些情况下,可以省略类型参数的显式声明

  • E - Element (在集合中使用,因为集合中存放的是元素)

  • T - Type(Java 类)
  • K - Key(键)
  • V - Value(值)
  • N - Number(数值类型)
  • - 表示不确定的 Java 类型
  1. public class GenericMethodExample {
  2. public static <T> boolean isEqual(T obj1, T obj2) {
  3. return obj1.equals(obj2);
  4. }
  5. public static void main(String[] args) {
  6. String str1 = "Hello";
  7. String str2 = "Hello";
  8. boolean isEqualStrings = isEqual(str1, str2);
  9. System.out.println("Are the strings equal? " + isEqualStrings);
  10. Integer num1 = 10;
  11. Integer num2 = 20;
  12. boolean isEqualNumbers = isEqual(num1, num2);
  13. System.out.println("Are the numbers equal? " + isEqualNumbers);
  14. }
  15. }

泛型类

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

  1. public class Pair<T, U> {
  2. private T first;
  3. private U second;
  4. public Pair(T first, U second) {
  5. this.first = first;
  6. this.second = second;
  7. }
  8. public T getFirst() {
  9. return first;
  10. }
  11. public U getSecond() {
  12. return second;
  13. }
  14. public void setFirst(T first) {
  15. this.first = first;
  16. }
  17. public void setSecond(U second) {
  18. this.second = second;
  19. }
  20. public static void main(String[] args) {
  21. Pair<String, Integer> pair1 = new Pair<>("Hello", 42);
  22. System.out.println("First: " + pair1.getFirst());
  23. System.out.println("Second: " + pair1.getSecond());
  24. Pair<Double, String> pair2 = new Pair<>(3.14, "World");
  25. System.out.println("First: " + pair2.getFirst());
  26. System.out.println("Second: " + pair2.getSecond());
  27. }
  28. }

类型通配符

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

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class TypeWildcardExample {
  4. public static void printList(List<?> list) {
  5. for (Object item : list) {
  6. System.out.print(item + " ");
  7. }
  8. System.out.println();
  9. }
  10. public static void main(String[] args) {
  11. List<Integer> integerList = new ArrayList<>();
  12. integerList.add(1);
  13. integerList.add(2);
  14. integerList.add(3);
  15. List<String> stringList = new ArrayList<>();
  16. stringList.add("Hello");
  17. stringList.add("World");
  18. System.out.println("Printing integerList:");
  19. printList(integerList);
  20. System.out.println("Printing stringList:");
  21. printList(stringList);
  22. }
  23. }

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


在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,185人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java (enum)

    Java 枚举(enum) Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一年的 12 个月份,一个星期的 7 天,方向有东南西北等。 Jav

    相关 Javaenum

    枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个

    相关 enum

    枚举类型enum C++中,枚举类型(enumeration) 是一个被命名的整型常量的集合。和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。C++包含