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); } }
🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——
点赞
👍收藏
⭐️评论
📝