gpt4 book ai didi

java - 在 Java 中,如何迭代接口(interface)的常量?

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:35 24 4
gpt4 key购买 nike

在一个接口(interface)中,我用这种方式存储常量(我想知道你对这种做法的看法)。这只是一个虚拟示例。

interface HttpConstants {
/** 2XX: generally "OK" */
public static final int HTTP_OK = 200;
public static final int HTTP_CREATED = 201;
public static final int HTTP_ACCEPTED = 202;
public static final int HTTP_NOT_AUTHORITATIVE = 203;
public static final int HTTP_NO_CONTENT = 204;
public static final int HTTP_RESET = 205;
public static final int HTTP_PARTIAL = 206;

...
}

有没有一种方法可以遍历此接口(interface)中声明的所有常量?

最佳答案

使用反射:

Field[] interfaceFields=HttpConstants.class.getFields();
for(Field f:interfaceFields) {
//do something
}

但是无论如何,如果您可以重新设计您的类,我建议您处理静态枚举常量构造。因此,假设您的类将始终包含每个常量的 int 值:

enum HttpConstants {

HTTP_OK(200), HTTP_CREATED(201), HTTP_ACCEPTED(202),
HTTP_NOT_AUTHORITATIVE(203),HTTP_NO_CONTENT(204),
HTTP_RESET(205), HTTP_PARTIAL(206) /* ... */;

private int value;

HttpConstants(int aValue) {
value=aValue;
}

public int getValue() {
return value;
}
}

然后,循环它:

    for(HttpConstants val: HttpConstants.values()) {
int value=val.getValue();
//...
}

因此,避免访问反射 API。

关于java - 在 Java 中,如何迭代接口(interface)的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9700081/

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