Image

Imageakud82 wrote in Imageru_java

Вопрос по сокрытию членов суперкласса

Можно ли в Java принудительно заставить использовать @Override, если метод уже определен в базовом классе?



есть старые сервисы слоя, которые я собрался зарефакторить следующего вида:

public class RESTServiceFacade {
@EJB
public void getReportService() {
...
}

public void getFriendlyReport(Date fromDate, Date toDate) {
...
}
}

public class ReportServiceFacade {
@EJB
public void getReportService() {
...
}

public void getReport(Date fromDate, Date toDate) {
...
}
}

в новом виде это будет:

public abstract class BaseLayerSupertype {
 @EJB
public void getReportService() {
...
}
}

public class ReportSeerviceFacade extends BaseLayerSupertype {
// Ошибка компиляции - нет @Override
//
// @EJB
// public void getReportService() {
// ...
// }

public void getReport(Date fromDate, Date toDate) {
...
}
}

public class ReportServiceFacade extends BaseLayerSupertype {
public void getFriendlyReport(Date fromDate, Date toDate) {
...
}
}

Т.е. я например если я в C# реализую метод getReportService в базовом классе,
то в потомках при попытке реализации этого метода без override компилятор не даст мне
скомпилировать апликуху, жава же ошибки не выдает что ни есть тру, так как надо описать контракты.