Sto rielaborando un codice ereditato, ma sono stato sconcertato dalla decisione di progettazione e non riesco a capire i termini corretti per google. Il mio predecessore userebbe blocchi come questo:In Java, perché avere un blocco di codice senza parole chiave, solo parentesi graffe
public class ChildClass extends ParentClass {
{
inheritedVar = "someVal";
}
public ChildClass(){ /* constructor exists */ }
// rest of code
}
Qual è il punto di dichiarare un blocco di codice senza parola chiave? Non si comporta come un blocco statico, non credo. È un'alternativa all'impostazione nel costruttore? Questo avrebbe qualche effetto se venisse usata una fabbrica (che in questo caso non lo è)? Ho trovato un thread correlato qui su this happening in C ma il ragionamento (dichiarazione delle variabili &) non sembrava rilevante per Java.
Qualsiasi pensiero o idea sul "perché" di questo sarebbe apprezzato. È abbastanza facile da ridimensionare questo, sono solo curioso di questo punto.
+1 per indicare l'uso corretto di questo blocco. – birryree
+1: concordo sui metodi di inizializzazione indicati. Tuttavia, dato che c'è un solo costruttore, l'intero punto di questo blocco nella mia base di codice sembra piuttosto inutile. – Riggy
@Riggy, è sicuramente ridondante. – Mike