Я пытаюсь использовать значение строки аннотации, связанное с значениями перечисления, чтобы получить ссылку на связанное значение перечисления.Получить значение enum через значение аннотации в Java
Я в конечном итоге застрять в середине пути ... В настоящее время у меня есть код ниже разработки:
Аннотация Код:
public @interface MyCustomAnnotation{
String value();
}
Enum код:
public enum MyEnum{
@MyCustomAnnotation("v1")
VALUE1,
@MyCustomAnnotation("v2")
VALUE2,
@MyCustomAnnotation("v3")
VALUE3,
}
Making использование аннотации перечисления:
String matchString = "v1";
MyEnum myEnumToMatch;
// First obtain all available annotation values
for(Annotation annotation : (MyEnum.class).getAnnotations()){
// Determine whether our String to match on is an annotation value against
// any of the enum values
if(((MyCustomAnnotation)annotation).value() == matchString){
// A matching annotation value has been found
// I need to obtain a reference to the corrext Enum value based on
// this annotation value
for(MyEnum myEnum : MyEnum.values()){
// Perhaps iterate the enum values and obtain the individual
// annotation value - if this matches then assign this as the
// value.
// I can't find a way to do this - any ideas?
myEnumToMatch = ??
}
}
}
Заранее спасибо.
Вы не можете работать с 'MyEnum.values ()', потому что аннотации привязаны к элементам кода, а не к экземплярам объектов. Вам нужно будет использовать отражение для доступа к статическим полям MyEnum, которые хранят константы значения enum. Также 'MyEnum.class.getAnnotations()' ничего не вернет, потому что сам класс MyEnum не аннотируется ничем, поэтому цикл не будет работать. – millimoose
Вы действительно уволили свой код в отладчике, чтобы на самом деле высунуть состояние программы и посмотреть, какие значения возвращаются ?! – millimoose
Какая последняя необходимость? – Aerospace