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?