PDA

View Full Version : java e annotazioni ripetibili


vittorio130881
08-01-2015, 11:01
ciao ragazzi domanda piuttosto ostica (almeno per me)

data questa annotazione che in un certo programa viene ripetuta due volte con valori diversi


@Repeatable(TestTriggers.class)
public @interface TestTrigger {
String quando();
StrumentoDiTest come() default StrumentoDiTest.JUNIT; public enum StrumentoDiTest { JUNIT, GUI, JMETER, SOAPUI; } }


qui dichiariamo il contenitore triggers (non trigger) che ha un array di trigger

import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@Documented
public @interface TestTriggers {
TestTrigger[] value();
}

poi il testo su cui studio fa una reflection sulla class TestRepeatable su cui ho applicato per due volte la TestTrigger con i valori "come" e "quando" diversi....


Class<TestRepeatable> testRepeatableClass = TestRepeatable.class;
TestTriggers [] annotations = testRepeatableClass.getAnnotationsByType(TestTriggers.class);
for (TestTriggers testTriggers: annotations)
{ TestTrigger[] values = testTriggers.value();
for(TestTrigger testTrigger: values)
{ System.out.println(testTrigger.quando());
System.out.println(testTrigger.come());
}
}




la domanda è questa... questo comando
TestTriggers [] annotations = testRepeatableClass.getAnnotationsByType(TestTriggers.class);


perchè necessita di un array? cioè il TestTriggers contenitore non è uno soltanto?


io pensavo fosse così, ovvero TestTrigger senza s
TestTrigger [] annotations = testRepeatableClass.getAnnotationsByType(TestTriggers.class);
for(TestTrigger testTrigger: annotations)
{ System.out.println(testTrigger.quando());
System.out.println(testTrigger.come());

potete aiutarmi please?
insomma cosa mi da getAnnotationsByType

deadbeef
09-01-2015, 08:04
http://softwarecave.org/2014/05/20/repeating-annotations-in-java-8/

vittorio130881
09-01-2015, 08:18
dead ma non è che ti sei iscritto al forum per rispondere PERFETTAMENTE alla mia domanda?? hahahahaha grazie mille sei un mito

deadbeef
09-01-2015, 11:28
Prego :D