Sto facendo alcuni esercizi sulle annotazioni e in uno di questi chiedeva di annotare una classe con una annotazione completa e di fare una serie di controllo. Uno di questo controlli è quello sull'incapsulamento.
Nella classe ho inserito una variabile public che teoricamente non dovrebbe permettere l'incapsulamento (dal momento in cui non è private) ma non sono riuscito a sviluppare il metodo.
Questa è la soluzione del manuale:
codice:private static void controlloIncapsulamento(Class objectClass4, String className) throws AnnotationException, NoSuchMethodException { Field[] variabili = objectClass4.getDeclaredFields(); for(Field variabile : variabili) { final String nomeVariabile = variabile.getName(); final Class<?> type = variabile.getType(); final Method setMethod = objectClass4.getDeclaredMethod("set" + capitalize(nomeVariabile), type); final Method getMethod = objectClass4.getDeclaredMethod("get" + capitalize(nomeVariabile)); if (setMethod == null || getMethod == null || !getMethod.getReturnType().equals(type)) { throw new AnnotationException("variabile " + nomeVariabile + " non incapsulata correttamente"); } } System.out.println("controllo incapsulamento: OK \n"); } private static String capitalize(String string) { return string.substring(0, 1).toUpperCase() + string.substring(1); }
In tutta sincerità non ho capito assolutamente nulla della logica di funzionamento. Potete aiutarmi a capire come funziona questo metodo?

Rispondi quotando
