Questo è uno dei tanti motivi per nascondere le variabili dietro setter/getter coppie. Quindi nel setter puoi comunicare al tuo ascoltatore che questa variabile è stata modificata nel modo appropriato. Come hanno commentato gli altri, non esiste un modo per fare esattamente quello che vuoi, devi implementarlo tu stesso.
In alternativa, Benjamin mostra uno schema interessante, chiamato pattern Decorator, che potrebbe essere utile se il codice in questione non può essere modificato. You can look up more info at wikipedia
L'idea è di creare un wrapper compatibile attorno a un oggetto. Diciamo che il tuo oggetto in questione è di tipo MyClass.
class MyClass{
publc void doFunc(){...}
}
class MyLoggedClass extends MyClass{
MyClass myObject;
publc void doFunc(){
//Log doFunc Call
myObject.doFunc();
}
}
invece di
MyClass object = new MyClass();
Si potrebbe utilizzare
MyClass object = new MyLoggedClass(new MyClass());
Ora il vostro resto del codice sarebbe utilizzare l'oggetto come al solito, solo che ogni chiamata di funzione sarà registrata, o notificato , ecc.
Come vedrete in wikipedia, questo è tipicamente fatto tramite un'interfaccia che la classe in questione eredita da, ma questo potrebbe non essere possibile nel tuo caso.
fonte
2013-03-15 13:40:44
Sei interessato a fare questo con lo scopo di debug o si desidera utilizzare questo nel codice di produzione? –
nel codice di produzione – Sinigami