I JavaBeans non hanno alcuna attività menzionata nel contesto di concetti orientati agli oggetti come l'incapsulamento.
L'incapsulamento si riferisce al contenimento delle funzionalità dietro a api - nei linguaggi orientati agli oggetti, l'API viene tipicamente fornita da una classe attraverso i suoi membri pubblici. L'incapsulamento consente di riutilizzare facilmente le funzionalità senza causare l'associazione di annullamento perché, ancora, la funzionalità è accessibile tramite un'API, mai direttamente.
Come qualcuno menzionato sopra, un oggetto per definizione si trova quando i dati e il codice che operano su di esso si trovano nella stessa classe. Nel 99,9% dei casi che ho visto utilizzare JavaBeans (che sfortunatamente è ovunque), non contengono alcuna funzionalità diversa da setter e getter. Setter e getter non sono funzionalità a livello di applicazione, ovvero non si intende salvare una fattura chiamando un setter o un getter, quindi i bean non sono oggetti.
I bean sono struct, che sono strutture solo dati utilizzate nella programmazione strutturata e procedurale. Erano lo stato dell'arte alla fine degli anni '80, all'inizio degli anni '90, utilizzando quasi tutte le lingue disponibili al momento, il più popolare è C.
L'uso dei bean renderà i tuoi programmi molto più grandi e molto meno flessibili rispetto, ad esempio, all'utilizzo di raccolte in luoghi appropriati. Tutti quelli di cui parlo con schifo a questa nozione, ma se non sbaglio, le classi di Java compilate, sotto il cofano, sono fondamentalmente raccolte di collezioni. Queste raccolte sono ciò che la riflessione troll attraverso per ottenere informazioni sulla classe. Sono ciò che il runtime guarda attraverso per trovare il metodo corretto da eseguire per una determinata classe.
Un bean è, senza dubbio, un'automazione poco amichevole che puoi ottenere - sono assolutamente inflessibili e faranno crescere il tuo codice base ben oltre la funzionalità che contiene.