[Java] static 메소드

CNH·2024년 2월 3일

개발

목록 보기
8/17
  1. static메소드는 객체를 생성하지 않고도 호출할 수 있다. 까지 알고있었다. 그런데 같은 패키지에 있는 다른 클래스에서 import도 안하고 그냥 메소드 이름만으로 호출할 수도 있었다. (처음알았다.)

  2. 예를 들어

@RestControllerAdvice
public class ArticleExceptionHandler {


    @ExceptionHandler(ArticleNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public List<ErrorResponse> articleNotFoundExceptionHandler(ArticleNotFoundException e){
        return makeErrorResponse(e, "article");
    }

    @ExceptionHandler(ArticleNotOwnerException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public List<ErrorResponse> articleNotOwnerExceptionHandler(ArticleNotOwnerException e){
        return makeErrorResponse(e, "article");
    }

}

에서

public class ExceptionHandlerTool {
    public static List<ErrorResponse> makeErrorResponse(Exception e, String fieldName) {
        return List.of(ErrorResponse.builder()
                .message(e.getMessage())
                .errorType(e.getClass().getSimpleName())
                .fieldName(fieldName)
                .build());
    }
}

에 있는 makeErrorResponse를 호출하는 경우이다. 그런데 ArticleExceptionHandler 클래스에서 또 makeErrorResponse함수를 새로 만들 경우 자동으로 같은 클래스 내에 있는 함수를 먼저 참조한다. 즉, 같은 클래스에 함수를 우선적으로 참조하고, 그렇지 않으면 같은 패키지 내 함수를 찾아가나보다..

profile
끄적끄적....

0개의 댓글