Eredita una variabile statica in Java
-
29-09-2019 - |
Domanda
Io voglio avere la seguente configurazione:
abstract class Parent {
public static String ACONSTANT; // I'd use abstract here if it was allowed
// Other stuff follows
}
class Child extends Parent {
public static String ACONSTANT = "some value";
// etc
}
Questo è possibile in java? Come? Preferirei non utilizzare le variabili di istanza / metodi se posso evitarlo.
Grazie!
EDIT:
La costante è il nome di una tabella di database. Ogni oggetto bambino è un mini ORM.
Soluzione
Non si può fare esattamente come si desidera. Forse un compromesso accettabile potrebbe essere:
abstract class Parent {
public abstract String getACONSTANT();
}
class Child extends Parent {
public static final String ACONSTANT = "some value";
public String getACONSTANT() { return ACONSTANT; }
}
Altri suggerimenti
In questo caso si deve ricordare è in java non si può overried metodi statici. Quello che è successo è di nascondere la roba.
secondo il codice che avete messo se fate le seguenti cose risposta sarà nullo
Parent.ACONSTANT == null ; ==> true
Parent p = new Parent(); p.ACONSTANT == null ; ==> true
Parent c = new Child(); c.ACONSTANT == null ; ==> true
fino a quando si usa Parent come tipo di riferimento ACONSTANT sarà nullo.
ti permette di fare qualcosa di simile.
Child c = new Child();
c.ACONSTANT = "Hi";
Parent p = c;
System.out.println(p.ACONSTANT);
Output sarà nullo.