gpt4 book ai didi

Java:如何从通用类型对象实例中获取枚举类的值?

转载 作者:搜寻专家 更新时间:2023-11-01 04:00:31 24 4
gpt4 key购买 nike

我想创建一个枚举编辑器,它采用枚举类型作为其泛型。E 是泛型,但仅限于 Enum 类型。如何从实例 e 获取 Enum 类的值?

public class ComboBoxEnumEditor<E extends Enum<E>>{
public ComboBoxEnumEditor(E e) {
// how to get values of E from e?
// attemp1:
List values = e.getClass().values();
// attemp2:
List values = ((Enum.class)e.getClass()).values();
// attemp3:
List values = ((Enum.class)e.getClass()).values();
// none of the above works...
}
}

假设我有一个枚举

public enum Location {
Default( false, EAttributeLocation.MAIN_TABLE_IF_AVAILABLE ),
Main( false, EAttributeLocation.MAIN_TABLE ),
Overflow( false, EAttributeLocation.OVERFLOW_TABLE ),
Separate( false, EAttributeLocation.SEPARATE_TABLE );
......
}

我希望我的 ComboBoxEnumEditor 能够做到

{
ComboBoxEnumEditor(new Location());
}

请帮忙,谢谢。

最佳答案

看起来你在找(但我可能弄错了)

Enum[] values = e.getClass().getEnumConstants();

或如 @pbabcdefp 所述在 this answer (对他来说是大+1)如果你想要E[]而不是 Enum[]

E[] values = e.getDeclaringClass().getEnumConstants();

同样基于

...which takes an Enum Class as its generic

您的参数可能应该是 Class<E> clazz不是 E e本身所以你可以将它与 ComboBoxEnumEditor(Location.class); 一起使用.在那种情况下,您可以简单地使用

E[] values = clazz.getEnumConstants();

关于Java:如何从通用类型对象实例中获取枚举类的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907790/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com