Проблемы с компиляцией подклассов базового класса, который я определил, который имеет один метод, и каждый подкласс реализует абстрактный базовый метод, но javac говорит, что они даже не понятны в подклассе.Невозможно скомпилировать подкласс, который реализует абстрактный метод из базового класса
DbModel.java (базовый класс)
package com.manodestra.db;
import java.sql.ResultSet;
import java.sql.SQLException;
public abstract class DbModel<T extends DbModel> extends Model {
abstract T newInstance(ResultSet rs) throws SQLException;
}
DbModel расширяет модель, которая имеет только общий метод ToString.
MenuPermissions.java (класс суб)
package com.manodestra.csa.db.model.configNew;
import com.manodestra.db.DbModel;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
public class MenuPermissions extends DbModel<MenuPermissions> {
private final String menuId;
private final String userLevel;
public MenuPermissions(
String menuId,
String userLevel
) {
this.menuId = menuId;
this.userLevel = userLevel;
}
public String getMenuId() {
return this.menuId;
}
public String getUserLevel() {
return this.userLevel;
}
public MenuPermissions newInstance(ResultSet rs) throws SQLException {
return new MenuPermissions(
rs.getString("menu_id"),
rs.getString("user_level")
);
}
}
Ошибка компиляции
[javac] Compiling 487 source files to C:\Media\Code\manodestra_java\bin
[javac] C:\Media\Code\manodestra_java\src\com\manodestra\csa\db\model\configNew\MenuPermissions.java:10:
error: MenuPermissions is not abstract
and does not override abstract method newInstance(ResultSet) in DbModel
[javac] public class MenuPermissions extends DbModel<MenuPermissions> {
[javac] ^
Кто-нибудь видел, что проблема здесь? Я предполагаю, что я пропускаю что-то очень простое.
Дополнительная информация о требованиях:
Я построения основы сущности, которая генерирует объекты модели из данной базы данных. MenuPermissions выше - один из таких объектов модели (автоматически генерируемый классом, который я написал GenerateModel). Я хочу, чтобы каждая модель имела метод, который позволит мне получить новый экземпляр каждого объекта objecct на основе набора результатов, который будет соответствующим образом заполнять объект и возвращать его. В идеале это должен быть статический метод, но я пробовал его как конкретный метод на данный момент, так как мне нужно обеспечить его существование в каждом подклассе DbModel. Надеюсь, это имеет смысл.
Ваш абстрактный метод имеет доступ к пакету, я не знаю, было ли это предназначено – peter
@Laser Yep. .. Опубликовать его как ответ. Пальцы вверх. – Mordechai
Уровень доступа может быть расширен при переопределении: [Идеал] (http://ideone.com/fIWznf) –