2012-08-06 14 views
17

Prima di iniziare vorrei che tutti sapessero che in effetti ho passato un buon tempo a cercarlo su google e ho trovato un numero molto di spiegazioni e definizioni. Ma anche così dopo aver passato ore a leggere il soggetto sembra ancora piuttosto vago. So che devo fare domande che possono migliorare la comunità, ma questa è solo per me per vedere se ho una chiara comprensione di JavaBeans.Cosa sono JavaBeans in inglese normale?

Da quello che posso capire, un JavaBean è fondamentalmente una classe, proprio come qualsiasi altra classe Java, tranne che aderisce a certe convenzioni, vale a dire:

  • La classe deve implementare Serializeable
  • proprietà di classe sono si presume che sia privato ei loro nomi iniziano con una lettera minuscola
  • Ogni proprietà deve avere i rispettivi metodi getter e setter.
  • Ciascun metodo di impostazione inizia con il prefisso 'ottieni' seguito dal nome della proprietà, ad es. setName()
  • metodi setter sono pubblici e vuoto
  • Lo stesso vale per i metodi getter (prefisso 'get', pubblico, tipo di ritorno rispettive proprietà tipo di classe ecc)
  • Per le proprietà booleane, invece di 'avere' una usa il prefisso 'is'
  • In senso stretto è l'istanza della classe che è considerata un 'bean' e non la classe stessa.

E ce l'hai, dopo un tempo molto lungo di lettura, questo è quello che riesco a capire ... È così? Sono vicino? Ho sbagliato completamente?

... Grazie per le risposte di tutti in modo da poter aggiornare questa lista proiettile :-)

+0

Correlato: http://stackoverflow.com/questions/1727603/places-where-javabeans-are-used – assylias

+0

Si ha un errore riguardante il getter della proprietà booleana: si è scritto 'set' invece di 'is'. – Autar

risposta

11

un JavaBean è uno standard . Tutti Javabeans hanno le seguenti caratteristiche: 3

1) La classe implementa Serializable
2) Tutti i campi sono incastonatori pubbliche e getter per controllare l'accesso.
3) Un costruttore pubblico senza argomenti.

+6

Pensavo che serializzabile non fosse necessario. – assylias

+3

http://stackoverflow.com/questions/3142181/have-java-beans-to-be-serializable –

+0

penso che sia necessario soddisfare lo standard; in pratica potrebbe non essere necessario per funzionare in tutti i casi. – hvgotcodes

4

Sì, è praticamente tutto.

Solo un paio di bit extra:

  • Getters prendere alcun parametro, e setter prendere un singolo parametro dello stesso tipo come la proprietà
  • Le proprietà possono essere in lettura o sola scrittura omettendo il setter o getter rispettivamente
  • boolean getter utilizzano il prefisso 'è'

e penso che sia strettamente le istanze che sono "fagioli", non la classe.

0

A complemento delle risposte dei nostri simili:

  1. Aggiungi un ascoltatore con un metodo addXXXListener.
  2. Rimuovere un listener con un metodo removeXXXListener.
  3. I campi booleani (primitivi) devono avere un metodo isXXX invece di un metodo getXXX.

Poiché è uno standard, è importante seguirlo, poiché le librerie e le tecnologie Java potrebbero utilizzarlo sotto il cofano. Esempi: linguaggio delle espressioni nelle JSP, costruttori di GUI, ecc

Specification: http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

+1

Dove hai visto che gli ascoltatori sono necessari? Non ne ho sentito parlare ... – maba

+0

Non sono necessari, ma se devi usare devi seguire lo standard. Almeno l'ho studiato quando ho ottenuto il mio SCJP cinque anni fa. Date un'occhiata: http://www.oracle.com/technetwork/java/javase/documentation/javabeans-getlisteners-192680.html – davidbuzatto

2

è così? Sono vicino?

Sì, sei relativamente corretto. La maggior parte dei fagioli aderisce a tali regole di base per la definizione. Tuttavia, solo alcune altre cose da aggiungere. Per distinguere i bean da POJO (Plain Old Java Object), i bean hanno un costruttore predefinito e solitamente implementano l'interfaccia serializzabile.

Ciò consente di lavorare con modelli di base in molti framework. I bean vengono principalmente utilizzati per archiviare e recuperare i dati in una struttura di layout semplice, in modo che i modelli di dati possano essere condivisi attraverso architetture specifiche. Gli esempi includono gli eventi di attivazione in un'interfaccia utente che utilizzano gli stessi dati per lavorare con finestre di dialogo diverse o per recuperare risultati per un determinato ORM (Object Relationship Mappings). Altri esempi da considerare sono DTO (Data Transfer Object), VO (Value Objects) ed EJB (Enterprise Java Beans).