单个泛型可以作为另一个枚举的构造参数的入参之一吗?
时间: 2023-12-02 07:02:11 浏览: 51
Java面试小抄第一版 By 库森.pdf
是的,单个泛型可以作为另一个枚举的构造参数的入参之一。
例如,假设有一个泛型类 `MyClass<T>`,其中 `T` 是一个任意类型的泛型参数。现在,我们创建一个枚举类型 `MyEnum`,其中 `MyEnum` 枚举类型的构造函数接受一个 `MyClass` 泛型类型的参数:
```java
public class MyClass<T> {
private T value;
public MyClass(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
public enum MyEnum {
FIRST(new MyClass<String>("Hello")), SECOND(new MyClass<Integer>(42));
private final MyClass<?> myClass;
private MyEnum(MyClass<?> myClass) {
this.myClass = myClass;
}
public MyClass<?> getMyClass() {
return myClass;
}
}
```
在该示例中,`MyEnum` 枚举类型的构造函数接受一个 `MyClass<?>` 泛型类型的参数,并将其保存在实例变量 `myClass` 中。然后可以通过 `getMyClass()` 方法来获取该实例的 `MyClass` 对象。
调用该示例的示例代码如下:
```java
System.out.println(MyEnum.FIRST.getMyClass().getValue()); // 输出 Hello
System.out.println(MyEnum.SECOND.getMyClass().getValue()); // 输出 42
```
在该示例中,通过 `MyEnum` 枚举类型的实例调用 `getMyClass()` 方法,可以获取该实例的 `MyClass` 对象。注意,`MyClass<?>` 泛型类型作为了 `MyEnum` 枚举类型的构造函数的参数之一。
阅读全文