【发布时间】:2021-06-29 16:59:09
【问题描述】:
我需要根据一个参数动态选择一个具有一些属性的枚举,该参数将提供要使用的枚举名称的后缀。 我试过了,但是“getCodigoAsString()”方法不起作用。
枚举示例:
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor @Getter
public enum Chaves_35 {
MODELO_DISPOSITIVO(1234,"TEXT","IN","Modelo Dispositivo"),
DISPOSITIVO_SUPORTA_MULTI_TAREFA(4423,"TEXT","IN","Dispositivo Suporta Multi Tarefa"),
NOME_DISPOSITIVO(7845,"TEXT","IN","Nome Dispositivo"),
IDIOMA_DISPOSITIVO(3288,"TEXT","IN","Idioma Dispositivo"),
;
private int codigo;
private String tipo;
private String fluxo;
private String descricao;
public String getCodigoAsString() {
return String.valueOf(codigo);
}
}
做出选择的类:
public class ChavesCanal {
public static Enum<?>[] BuscaChavesCanal(int idCanal) {
Enum<?>[] resp = null;
switch (idCanal) {
case 6:
resp = Chaves_6.values();
break;
case 8:
resp = Chaves_8.values();
break;
case 10:
resp = Chaves_10.values();
break;
case 17:
resp = Chaves_17.values();
break;
case 21:
resp = Chaves_21.values();
break;
case 22:
resp = Chaves_22.values();
break;
case 27:
resp = Chaves_27.values();
break;
case 28:
resp = Chaves_28.values();
break;
case 35:
resp = Chaves_35.values();
break;
case 37:
resp = Chaves_37.values();
break;
default:
break;
}
return resp;
}
}
这是我尝试使用“ChavesCanal()”类的方法:
public static boolean VerificaChavesCanais_JSON(int codigoCanal) {
if(codigoCanal <= 0) return false;
JSONObject payloadJSON = new JSONObject("{\"1\":\"35\",\"8\":\"2021-06-29 14:33:41.121\",\"35\":\"Windows 10\",\"1234\":\"Computer\",\"3288\":\"PT-BR\",\"4423\":\"SIM\",\"7732\":\"64x\",\"7845\":\"PC_MAPS_01\"}");
try {
for (Enum<?> chaveId : ChavesCanal.BuscaChavesCanal(codigoCanal)) {
if(!payloadJSON.has(chaveId.getCodigoAsString())) {
System.out.println(" .... chave '" + chaveId.getCodigoAsString() + "' não encontrada!!!");
}
}
return true;
} catch (Exception e) {
System.out.println("ERRO em VerificaChavesCanais_JSON(): " + e.getMessage());
return false;
}
}
谢谢大家!!!
【问题讨论】:
-
什么不起作用?
payloadJSON的内容是什么? -
嗨@EmersonPardo。 “chaveId.getCodigoAsString()”不起作用(在最后一段代码中)。出现错误:未定义类型 Enum
的方法 getCodigoAsString()。此方法位于枚举 Chaves_35 内。谢谢。
标签: java reflection enums