Articles of finale

Come gestire un inizializzatore di campo finale statico che genera un’eccezione controllata

Sto affrontando un caso d’uso in cui vorrei dichiarare un campo static final con un’istruzione initializer dichiarata per lanciare un’eccezione controllata. In genere, sarebbe simile a questo: public statico finale ObjectName OBJECT_NAME = new ObjectName (“foo: type = bar”); Il problema che ho qui è che il costruttore ObjectName può lanciare varie eccezioni controllate, che […]

Inizializza un campo finale statico nel costruttore

public class A { private static final int x; public A() { x = 5; } } final significa che la variabile può essere assegnata una sola volta (nel costruttore). static significa che è un’istanza di class. Non riesco a capire perché questo è proibito. Dove queste parole chiave interferiscono tra loro?

Qual è lo scopo della parola chiave “finale” in C ++ 11 per le funzioni?

Qual è lo scopo della parola chiave final in C ++ 11 per le funzioni? Capisco che prevenga la funzione che sovrascrive le classi derivate, ma se questo è il caso, allora non è sufficiente dichiarare come non-virtuali le tue funzioni final ? C’è un’altra cosa che mi manca qui?

creare variabili finali all’interno di un ciclo

è permesso in java: for(int i=0;i<5;i++){ final int myFinalVariable = i; } La parola chiave della mia domanda è final . È permesso fare una variabile finale che cambia ad ogni giro del ciclo? Mi stavo chiedendo questo perché la finale dice che non è ansible modificare il valore della variabile (chiamando solo myFinalVariable = […]

Assegnazione variabile finale con try / catch

Poiché ritengo sia una buona pratica di programmazione, realizzo tutte le variabili (locali o di istanza) final se sono destinate a essere scritte una sola volta. Tuttavia, noto che quando un’assegnazione di variabili può generare un’eccezione, non è ansible effettuare detta variabile finale: final int x; try { x = Integer.parseInt(“someinput”); } catch(NumberFormatException e) { […]

Perché il compilatore Java non capisce che questa variabile è sempre inizializzata?

class Foo{ public static void main(String args[]){ final int x=101; int y; if(x>100){ y=-1; } System.out.println(y); } } Il compilatore Java capisce che la condizione dell’istruzione if è sempre vera e pertanto verrà sempre inizializzato. Nessun errore di compilazione, come previsto. class Bar{ public static void main(String args[]){ final int x; x=101; int y; if(x>100){ […]

Modifica dei campi finali privati ​​tramite riflessione

class WithPrivateFinalField { private final String s = “I’m totally safe”; public String toString() { return “s = ” + s; } } WithPrivateFinalField pf = new WithPrivateFinalField(); System.out.println(pf); Field f = pf.getClass().getDeclaredField(“s”); f.setAccessible(true); System.out.println(“f.get(pf): ” + f.get(pf)); f.set(pf, “No, you’re not!”); System.out.println(pf); System.out.println(f.get(pf)); Produzione: s = I’m totally safe f.get(pf): I’m totally safe s […]

Costanti e variabili in tempo di compilazione

La documentazione del linguaggio Java dice: Se un tipo primitivo o una stringa è definita come una costante e il valore è noto al momento della compilazione, il compilatore sostituisce il nome della costante ovunque nel codice con il suo valore. Questa è chiamata costante di compilazione. La mia comprensione è se abbiamo un pezzo […]

Perché tutti i campi in un’interfaccia sono implicitamente statici e definitivi?

Sto solo cercando di capire perché tutti i campi definiti in un’interfaccia sono implicitamente static e final . L’idea di mantenere i campi static ha senso per me dato che non puoi avere oggetti di un’interfaccia, ma perché sono final (implicitamente)? Qualcuno sa perché i progettisti Java sono andati a rendere i campi in un’interfaccia […]

Perché `private val` e` private final val` differenti?

Ero solito pensare che private val e private val private final val sono uguali, fino a quando ho visto la sezione 4.1 in Scala Reference: Una definizione di valore costante è della forma final val x = e dove e è un’espressione costante (§6.24). Il modificatore finale deve essere presente e nessuna annotazione del tipo […]