Possiamo chiamare il campo finale come costante dell'oggetto?

0

Chiamiamo static final campi come constant , piuttosto dovrei dire Class constant . Quindi possiamo chiamare solo final campi come Object's constant ? È giusto dirlo?

Edited ::

Considera il seguente codice:

class JustFinal
{
    final int a=20;
    final int b;

    JustFinal(int x, int y){
        //a=x;
        b=y;
    }

    public static void main(String arg[])
    {
        JustFinal jf = new JustFinal(100,200);
    }
}

Nel campo codice precedente a avrà lo stesso valore per tutte le istanze dell'oggetto e il campo b può avere un valore diverso per un'istanza di oggetto diversa. Non dovremmo chiamare final field a come CONSTANT e final field b come OBJECT's CONSTANT ?

    
posta Sahil Chhabra 08.08.2013 - 08:00
fonte

1 risposta

2

Qualsiasi valore determinato in fase di compilazione e non può essere modificato può essere considerato un costante .

Nel tuo codice di esempio, non dovresti utilizzare final di per sé a livello di classe se stai provando a fare in modo che tutte le istanze dell'oggetto abbiano lo stesso valore per a . L'uso del modificatore static significa che il valore è solo inizializzato una volta e quindi condiviso tra oggetti dello stesso tipo, dovresti renderlo anche private a meno che tu non voglia condividere la costante con altre classi. Nel tuo esempio, ogni istanza di JustFinal inizializzerà int a=20; invece di usare tutti la stessa copia (anche se la JIT probabilmente lo ottimizzerà per te).

In definitiva puoi chiamare a e b come preferisci, purché le persone ti capiscano. Ma se hai usato la frase "costante di oggetti" in conversazione con me, non avrei idea di cosa stavi parlando.

La differenza tra una costante (definita in fase di compilazione) e una variabile che, una volta assegnata non può avere il suo valore modificato, è mutabilità (da non confondere con < a href="http://en.wikipedia.org/wiki/Immutable_object"> oggetti immutabili ).

Userei il termine "proprietà / variabile immutabile" su "costante di oggetti".

    
risposta data 08.08.2013 - 08:22
fonte

Leggi altre domande sui tag