I think title describes the problem. Here's some code:
import static org.junit.Assert.assertEquals;
import java.lang.annotation.*;
public class Main {
public static void main(String[] args) throws Exception {
assertEquals("foo", Main.class.getDeclaredMethod("myMethod").getAnnotation(Anno.class).param());
// the magic here -> set to bar
assertEquals("bar", Main.class.getDeclaredMethod("myMethod").getAnnotation(Anno.class).param());
}
@Anno(param = "foo")
public void myMethod() {}
@Retention(RetentionPolicy.RUNTIME)
@interface Anno {
String param();
}
}
So far I'm guessing this is not possible. It seems that always when you try to get a method via reflection you only get copies and all values (like annotations) are reread from a deeper java layer. In these copies you could change values but these are gone if you reload.
Is there something I missed or is it really not possible?
Aucun commentaire:
Enregistrer un commentaire