【发布时间】:2017-04-27 00:49:43
【问题描述】:
我在 Java 中有一个 Enum,我将其更改为 enumerated annotations,如下所示:
public static final String PING = "ping";
public static final String PING_BACK = "ping.back";
public static final String REQUEST_MODE_NORMAL = "request_mode_normal";
public static final String ERROR_MESSAGE = "error_message";
@StringDef({PING, PING_BACK, REQUEST_MODE_NORMAL, ERROR_MESSAGE})
@Retention(RetentionPolicy.SOURCE)
public @interface Type {
}
@MessageCall.Type
private String mMessage;
现在我有另一个String 值由用户输入,我想将它传递到mMesssage 字段。这是编译时的未知值,所以我必须这样检查:
public MessageCall(String message) {
switch (message) {
case PING:
mMessage = PING;
break;
case PING_BACK:
mMessage = PING_BACK;
break;
case REQUEST_MODE_NORMAL:
mMessage = REQUEST_MODE_NORMAL;
break;
default:
mMessage = ERROR_MESSAGE;
}
}
我认为现在这对我来说太糟糕了,而且我认为“还有其他解决方案可以解决我的问题”。
感谢您的支持。
【问题讨论】:
-
这里没有枚举,只有字符串常量 你应该使用适当的枚举。
-
这是 Google 减少枚举大小的最佳做法。因此我对此感到困惑。
标签: java android annotations