Ho la seguente classe che sto usando come base di tutti i modelli nel mio progetto:Java: sostituzione della variabile statica della classe genitore?
public abstract class BaseModel
{
static String table;
static String idField = "id";
public static boolean exists(long id) throws Exception
{
Db db = Util.getDb();
Query q = db.query();
q.select(idField).whereLong(idField, id).limit(1).get(table);
return q.hasResults();
}
//snip..
}
Sto poi cercando di estendere da esso, nel modo seguente:
public class User extends BaseModel
{
static String table = "user";
//snip
}
Tuttavia, se provo a fare quanto segue:
if (User.exists(4))
//do something
Quindi, piuttosto che la query: "SELECT id FROM user WHERE id = ?"
, si produce la query: "SELECT id dal nulla WHERE id = ?". Di conseguenza, l'override del campo nella classe User
non sembra avere alcun effetto.
Come si supera questo problema? Se ho aggiunto un metodo setTable()
a BaseModel e ho chiamato setTable()
nel costruttore di User
, il nuovo valore di table
sarà disponibile per tutti i metodi della classe User
?
Clicked Upvote, nelle risposte pure. – UDPLover