Несколько аннотаций @ImportStatic для одного класса с использованием библиотеки Java Preon

Мне интересно, есть ли способ использовать несколько аннотаций @ImportStatic для одного класса с Preon?

Я попытался:

@ImportStatic(classA.class)
@ImportStatic(classB.class)

// Also tried:

@ImportStatic(classA.class classB.class)

// And: 
@ImportStatic(classA.class,classB.class)

Однако ни один из них не является действительным ...

У меня есть спецификация, которая просит меня посмотреть значение перечисления (classA) внешнего (родительского) класса, если оно соответствует определенному значению, то я также должен выполнить проверку перечисления на одном из родительских значений перечисления другого объекта ( classB), прежде чем перейти к чтению следующего поля.

РЕДАКТИРОВАТЬ: Вот моя первая попытка решения, в основном скопируйте ImportStatic и сделайте аннотацию ImportStatic2... Нужно посмотреть, насколько хорошо это работает.

diff --git a/preon-binding/src/main/java/org/codehaus/preon/el/ImportSupportingObjectResolverContext.java b/preon-binding/src/main/java/org/codehaus/preon/el/ImportSupportingObjectResolverContext.java
index b737719..8f4946c 100644
--- a/preon-binding/src/main/java/org/codehaus/preon/el/ImportSupportingObjectResolverContext.java
+++ b/preon-binding/src/main/java/org/codehaus/preon/el/ImportSupportingObjectResolverContext.java
@@ -89,14 +89,23 @@ public class ImportSupportingObjectResolverContext implements

     public static ObjectResolverContext decorate(ObjectResolverContext context,
                                                  Class<?> type) {
-        if (type.isAnnotationPresent(ImportStatic.class)) {
+        if (type.isAnnotationPresent(ImportStatic.class) || type.isAnnotationPresent(ImportStatic2.class)) {
             ImportSupportingObjectResolverContext replacement = new ImportSupportingObjectResolverContext();
             Map<String, Reference<Resolver>> references = new HashMap<String, Reference<Resolver>>();
+           if (type.isAnnotationPresent(ImportStatic.class)) {
             for (Class<?> imported : type.getAnnotation(ImportStatic.class)
                     .value()) {
                 references.put(imported.getSimpleName(), new ClassReference(
                         imported, replacement));
             }
+            }
+           if (type.isAnnotationPresent(ImportStatic2.class)) {
+            for (Class<?> imported : type.getAnnotation(ImportStatic2.class)
+                    .value()) {
+                references.put(imported.getSimpleName(), new ClassReference(
+                        imported, replacement));
+            }
+            }
             replacement.context = context;
             replacement.references = references;
             return replacement;

person ged    schedule 06.05.2015    source источник


Ответы (1)


Он выглядит с использованием синтаксиса следующим образом:

@ImportStatic({First.class,Second.class})
person ged    schedule 25.05.2015