Mam klasę abstrakcyjną o nazwie Klient. W jaki sposób mogę uzyskać dostęp do adnotacji, która została zadeklarowana w metodzie potomnej w metodzie potomnej? Jaki jest najlepszy sposób, aby sobie z tym poradzić?Java - Definiowanie adnotacji i dostęp do nich?
public abstract class Client {
protected void synchronize() {
// How can I get the Annotation defined on inheriting class?
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
StackTraceElement lastStackElement = stackTraceElements[stackTraceElements.length-1] ;
Method m = this.getClass().getMethod(lastStackElement.getMethodName(), String.class, int.class);
m.getAnnotation(Cache.class);
// synchronize data from server
}
}
.
public class OrderClient extends Client {
@Cache(minute = 5)
public void synchronizrWithCustomerId(String customerId) {
// So some stuff setup body and header
super.synchronize();
}
}
prawdopodobnie coś podobnego do tego, co właśnie zapisałeś. po prostu cache wyniki przez classname + methodname, aby uniknąć powtarzania refleksji – radai
@radai bardzo dobry pomysł dzięki – aryaxt