Domanda

Can qualcuno mi spieghi l'uso di Integer, Boolean ecc in sostituzione della loro tipi primitivi in ??Java?

Non riesco a cogliere i vantaggi loro stanno fornendo. Essi sembrano creare inutili problemi di gestione dei valori nulli.

Grazie!

È stato utile?

Soluzione

Boolean, Integer, Long, ... sono oggetti. Si possono utilizzare in luoghi dove non è possibile utilizzare i tipi primitivi, per esempio

  • memorizzandoli in una collezione come un Map
  • li utilizzano come modello parametro
  • assegnando loro un valore null
  • li utilizzano in modo più generale (ad esempio Long come Number)

Esempi:

new ArrayList<Integer>();
Long id = null;
Number num = new Long( 3 );

Altri suggerimenti

Il razionale per intero, booleano, e così via è quello di permettere tipi primitivi per essere utilizzato in contesti che richiedono un tipo di riferimento. Il caso d'uso classico è le API di raccolta che forniscono insiemi, liste, mappe, code e così via, dove il tipo di elemento deve essere un qualche tipo di riferimento.

In questo modo posso scrivere:

List<Integer> list = new ArrayList<Integer>();

ma quanto segue è un errore di compilazione:

List<int> list = new ArrayList<int>();

Si noti che questo caso d'uso per i tipi di wrapper primitive precede entrambi i tipi generici e le "nuove" collezioni API, e risale ai giorni in cui gli unici tipi di raccolta erano le originali (pre-generic) forme di Vector e Hashtable e loro simili.

A volte si ha realmente bisogno di un valore di essere nullable, per esempio se i vostri applicazione archivia i dati utente, una sicurezza sociale # possono essere sconosciuto. In quel caso di pulitore memorizzare nullo invece di -1.

ci sono anche cose che non si possono fare con i tipi primitivi, come loro memorizzazione in una mappa o tramite il polimorfismo (doppio e Integer entrambi sono esempi di numero).

primitive sono sempre più veloci.
tuttavia ci sono momenti, quando gli oggetti sono veramente utili:
1. upcasting. La funzione può assumere Number (è un genitore per tutti gli oggetti numerici: integer, float, ecc.) Per una discussione
2. Possibile valore nullo. Per esempio si è utilizzato durante la memorizzazione nel database. Oggetto può essere nullo, primitivi devono avere valore. Quindi, se il campo nel db è annullabile, è meglio utilizzare la versione oggetto del valore di base.
3. se la funzione prende oggetto e sempre dare un primitivo ci sono spese sui autoboxing (trasformando primitiva in oggetto). Lo stesso per il ritorno dalla funzione.
4. Gli oggetti sono determinati metodi, come GetHashCode (), toString (), ecc, che può essere molto utile in alcuni casi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top