Java에서 함수를 올바르게 재정의하는 방법은 무엇입니까?

Abiieez

다음 BO가 있습니다.

@Data
public abstract class CommonBO extends BaseBO{

    @NotBlank(message ="{validation.not.blank}")
    @Length(max = 100)
    String name;
}


@Data
@MappedSuperclass
public abstract class CommonPersist extends BasePersist {

    @Column(unique = true,nullable = false)
    private String name;

}

그럼 내 BaseController

public abstract class BaseController <T extends BasePersist, K extends BaseBO> {

 @RequestMapping(value = "/validate", method = RequestMethod.POST)
    @ResponseBody
    public ValidationResponse validate(@Valid K t,
                                       BindingResult result, Locale locale) {
        ValidationResponse res = new ValidationResponse();
        List<ErrorMessage> errorMessages = new ArrayList<>();
        if (!result.hasErrors()) {
            res.setStatus(MessageTypes.SUCCESS);
        } else {
            res.setStatus(MessageTypes.FAIL);
            List<FieldError> allErrors = result.getFieldErrors();
            errorMessages = new ArrayList<>();
            for (FieldError objectError : allErrors) {
                errorMessages.add(new ErrorMessage(objectError.getField(),
                        objectError.getDefaultMessage()));
            }
        }
        res.setErrorMessageList(errorMessages);
        return res;
    }

}

마지막으로, 또 다른 추상 컨트롤러

public abstract class CommonController<T extends CommonPersist, K extends CommonBO> extends BaseController {

  @Override
    public ValidationResponse validate(@Valid K t, BindingResult result, Locale locale) {
        ValidationResponse res = super.validate(t, result, locale);
        if (res.getStatus().equalsIgnoreCase(MessageTypes.SUCCESS)) {
            if (commonService.checkIfNameIsUsed(t.getName(), t.getId())) {
                ErrorMessage em = new ErrorMessage("name", messageSource.getMessage("error.duplicate.is.used", null, locale));
                res.getErrorMessageList().add(em);
                res.setStatus(MessageTypes.FAIL);
            }
        }
        return res;
    }
}

@Override주석은 "방법은 수퍼 클래스에서 메소드를 오버라이드 (override)하지 않는"라는 오류가 있습니다. CommonBo extends BaseBO@Override 함수가 BaseController의 메서드를 재정의해야 한다고 생각 했습니까?

업데이트 됨

@Slaks 답변을 기반으로

public abstract class CommonController<T extends CommonPersist, K extends CommonBO> extends BaseController<T,K> {

@Override
    public ValidationResponse validate(@Valid K t, BindingResult result, Locale locale) {
        ValidationResponse res = super.validate(t, result, locale);
        if (res.getStatus().equalsIgnoreCase(MessageTypes.SUCCESS)) {
            if (commonService.checkIfNameIsUsed(t.getName(), t.getId())) {
                ErrorMessage em = new ErrorMessage("name", messageSource.getMessage("error.duplicate.is.used", null, locale));
                res.getErrorMessageList().add(em);
                res.setStatus(MessageTypes.FAIL);
            }
        }
        return res;
    }
}
SLaks

귀하의 CommonController클래스가 확장 BaseController하지만, 모든 유형의 매개 변수를 지정하지 않습니다 ( <...>).

따라서 컴파일러는이를 BaseController<Object, Object>.

메소드가 Object매개 변수로 사용되지 않으므로 기본 유형과 일치하지 않습니다.

extends절에 유형 매개 변수를 지정해야합니다 .

public abstract class
  CommonController<T extends CommonPersist, K extends CommonBO>
       extends BaseController<T,K> {

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

현재 언어 정의에 다른 언어를 올바르게 삽입하는 방법은 무엇입니까?

for 루프 내에서 재귀 함수를 올바르게 호출하는 방법은 무엇입니까?

Excel에서이 중첩 IF 함수의 형식을 올바르게 지정하는 방법은 무엇입니까?

Visual Studio 2017에서 Azure 함수를 올바르게 실행하는 방법은 무엇입니까?

Blob에서 csv 파일의 문자 집합을 올바르게 수정하는 방법은 무엇입니까?

영역에서 개체를 올바르게 수정하거나 삭제하는 방법은 무엇입니까?

linq DateTime에서 변수를 올바르게 설정하는 방법은 무엇입니까?

Java에서 Font.createFont () 후에 deriveFont ()를 올바르게 호출하는 방법은 무엇입니까?

함수 내에서 time.sleep ()을 올바르게 사용하는 방법은 무엇입니까?

Android Java 목록에서 int를 올바르게 제거하는 방법은 무엇입니까?

Java에서 paintComponent를 올바르게 포장하는 방법은 무엇입니까?

CrafterCMS에서 메일 서버를 올바르게 설정하는 방법은 무엇입니까?

NIM에서 명령 행을 통해 인수를 올바르게 전달하는 방법은 무엇입니까?

Gorm에서 부분 업데이트를 올바르게 수행하는 방법은 무엇입니까?

레일의 루비에서 "where"절을 올바르게 수행하는 방법은 무엇입니까?

UITableViewController 하위 클래스에 대해 init ()을 올바르게 재정의하는 방법은 무엇입니까?

docstring 안에 Pytorch의 수학 표기법을 올바르게 표시하는 방법은 무엇입니까?

.get_queryset ()을 재정의 할 때 오류를 올바르게 반환하는 방법은 무엇입니까?

numpy 문서에서 f2py 예제를 올바르게 실행하는 방법은 무엇입니까?

AngularJS에서 올바르게 정리하는 방법은 무엇입니까?

비동기를 사용하고 nodejs에서 올바르게 대기하는 방법은 무엇입니까?

intersphinx를 사용하여 PyQt5 문서에 올바르게 링크하는 방법은 무엇입니까?

JSXTransformer에 대해 몇 개의 TD 태그를 올바르게 래핑하는 방법은 무엇입니까?

scikit-learn에서 교차 검증을 올바르게 수행하는 방법은 무엇입니까?

Android에서 피드 (Facebook / Instagram과 유사)를 올바르게 구현하는 방법은 무엇입니까?

OpenGL에서 텍스처를 올바르게 업 스케일하는 방법은 무엇입니까?

PyTorch에서 가중치를 올바르게 업데이트하는 방법은 무엇입니까?

생성자에서 초기화를 올바르게 관리하는 방법은 무엇입니까?

약속 내에서 mongodb async / await를 올바르게 구현하는 방법은 무엇입니까?

TOP Lista

CalienteEtiquetas

Archivo