作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下界面:
public interface GenericMethods {
public String getString();
}
通过这个接口(interface),我实现了这个枚举:
public enum SpecificEnum implements GenericMethods {
A("NOT"), B("RELATED"), C("TEXT");
SpecificEnum(String string) {
this.string = string;
}
private String string;
@Override
public String getString() {
return this.string;
}
}
现在,我希望能够使用参数
SpecificEnum.class
调用函数并可以调用
values()
该参数上的函数,以及返回数组元素上的接口(interface)方法。像这样的东西:
class Main {
public static void main(String[] args) {
for (GenericMethods gm : getEnums(SpecificEnum.class)) {
System.out.printf(gm.getString());
}
}
public static T[]<T extends GenericMethods> getEnums(Class<T> enum1) {
enum1.values();
}
}
但是,经过大量搜索,我还没有遇到使用泛型与同时实现接口(interface)的枚举的情况。我也对泛型类型进行了很多思考,但我找不到能够调用
values()
的正确语法。在通用枚举类上。主要目标是以相同的方式管理多个相关的枚举。
最佳答案
我怀疑您可能正在寻找类似的东西:
public static <T extends Enum<T> & GenericMethods> T[] getEnums(Class<T> enum1) {
return enum1.getEnumConstants();
}
public static void main(String[] args) {
for (GenericMethods gm : getEnums(SpecificEnum.class)) {
System.out.println(gm.getString());
}
}
结果:
NOT
RELATED
TEXT
变化:
<T extends GenericMethods>
在返回类型之前,因为只有泛型方法可以声明其泛型类型。 <T extends Enum<T> & GenericMethods>
除了实现 GenericMethods getEnumConstants()
而不是 values()
因为我们正在使用 Class
, 不是 enum
类型。 关于java - 获取实现接口(interface)的通用枚举的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64595676/
我是一名优秀的程序员,十分优秀!