PDA

View Full Version : [Java] Classi autoistanziate? Es. Integer e String


lycenhol
17-11-2013, 19:13
Ciao
Vorrei un chiarimento sul Java da chi è più esperto di me.
Normalmente io scrivo una classe e per sfruttarne i metodi devo istanziarne un oggetto.

Esempio se voglio calcolare l'area del quadrato, devo scrivere:
Quadrato a = new Quadrato (2.5);
float i = a.area();

Ma esistono classi di sistema, come Integer, in cui per usare un metodo mi basta scrivere:

String a = Integer.toString("2.5")

Perchè non è necessario istanziare un oggetto Integer?
È possibile scrivere una classe con le stesse caratteristiche?

----------------------------------------------------------------

Domanda 2:
È possibile estendere i metodi di una classe di sistema, senza cambiarne il nome?
Nella fattispecie mi interesserebbe arricchire String di metodi specifici per il mio problema, ma non vorrei farle diventare qualcosa tipo MyString, per non perdere la compatibilità con tutte le funzioni che sfruttano questo "pluripremiato" tipo di Java.
È possibile?

------------------------------------------------------------------

Grazie

GByTe87
17-11-2013, 19:27
Ciao
Vorrei un chiarimento sul Java da chi è più esperto di me.
Normalmente io scrivo una classe e per sfruttarne i metodi devo istanziarne un oggetto.

Esempio se voglio calcolare l'area del quadrato, devo scrivere:
Quadrato a = new Quadrato (2.5);
float i = a.area();

Ma esistono classi di sistema, come Integer, in cui per usare un metodo mi basta scrivere:

String a = Integer.toString("2.5")

Perchè non è necessario istanziare un oggetto Integer?
È possibile scrivere una classe con le stesse caratteristiche?


Si tratta di metodi statici; non necessitano che venga creata un'istanza di quella classe per essere utilizzati; tipicamente sono metodi che non utilizzano variabili d'istanza.


----------------------------------------------------------------

Domanda 2:
È possibile estendere i metodi di una classe di sistema, senza cambiarne il nome?
Nella fattispecie mi interesserebbe arricchire String di metodi specifici per il mio problema, ma non vorrei farle diventare qualcosa tipo MyString, per non perdere la compatibilità con tutte le funzioni che sfruttano questo "pluripremiato" tipo di Java.
È possibile?

------------------------------------------------------------------

Grazie

Non solo non puoi mantenere lo stesso nome, ma... non puoi neppure creare una classe MyString che estende String, in quanto quest'ultima è una classe final :D

lycenhol
17-11-2013, 19:33
Vallallah Rising, quindi le String me le devo tenere così!

Per i metodi basta che li renda statici quindi? Ed immagino che ovviamente non dovranno avere riferimenti a this?

Ci provo. Grazie delle risposte!

Oceans11
17-11-2013, 19:55
Ma esistono classi di sistema, come Integer, in cui per usare un metodo mi basta scrivere:
String a = Integer.toString("2.5")

Si tratta di metodi statici; non necessitano che venga creata un'istanza di quella classe per essere utilizzati; tipicamente sono metodi che non utilizzano variabili d'istanza.

veramente io non lo trovo da nessuna parte questo metodo...Integer (http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html)

GByTe87
17-11-2013, 19:59
Ho dato per scontato che fosse Integer.toString(int i)