Я пытаюсь создать структуру модели, чтобы получить доступ к базе данных, вдохновленной Larvel's Eloquent (PHP).Доступ к свойствам из расширенного класса
В принципе, у меня есть класс под названием Model
, и пока он просто пуст.
тогда я получил еще один класс с именем User
, который расширяет Model
public class User extends Model {
private String table = "users";
}
Как вы можете видеть класс пользователя также получил свойство таблицы, которая ссылается на таблицу в базе данных модель, представляющая.
Внутри моего Model.java
Затем я пытаюсь получить имя таблицы.
До сих пор я запускаю некоторый код в моем конструкторе Model.java
, где я просматриваю все поля на экземпляре. Это дает мне объект Field, но я не могу получить содержимое таблицы из Model.java
Model.java
:
public abstract class Model {
public Model()
{
List<Field> fields = new ArrayList<>();
for (Class<?> c = this.getClass(); c != null; c = c.getSuperclass()) {
fields.addAll(Arrays.asList(c.getDeclaredFields()));
}
for (Field field : fields)
{
String name = field.getName(); //returns "table"
}
}
}
В общем, то, что мне нужно, чтобы получить имя таблицы из класса это расширяет модель.
Любые идеи? или это плохая практика?
Модель должна иметь абстрактный метод getTableName. Это плохая практика, класс никогда не должен знать подробностей о классах, которые наследуют его. –
Не могли бы вы рассказать мне о том, как вы это сделаете? :) Я раньше не работал с абстрактными методами. – Jazerix
Вы переопределите его конкретным методом в расширенном классе, создав простой getter для вашей частной переменной. –