Java - 메서드 인수에서 NotNull 주석 사용

MD Aminul Islam 2023년10월12일
  1. @NotNull 주석 개요
  2. 메서드 인수에서 @NotNull 주석 사용
Java - 메서드 인수에서 NotNull 주석 사용

오늘의 자습서에서는 @NotNull 주석에 대해 설명하고 코드 예제를 사용하여 Java에서 작업하는 동안 메서드 인수에서 이를 사용할 수 있는 방법을 보여줍니다.

@NotNull 주석 개요

null 값을 반환하지 않도록 변수 또는 메서드를 설정하려면 @NotNull 주석을 사용할 수 있습니다. 이것은 표준 JSR 주석이며 주석이 달린 속성 값이 null이 아닌지 확인합니다.

@NotNull의 특징은 메소드를 @NotNull로 설정하면 null 값을 반환하지 않으며 변수가 @NotNull로 설정되면 null을 보유할 수 없다는 것입니다. 값.

중요한 점은 부모 메서드에 @NotNull이 포함된 경우 해당 자식에 @NotNull 주석을 추가해야 한다는 것입니다. 다음으로 메서드 인수에서 사용하는 방법을 알아보기 위해 아래의 코드 펜스로 이동하겠습니다.

메서드 인수에서 @NotNull 주석 사용

예제 코드:

import javax.validation.constraints.NotNull;

public class JavaNotNull {
  int sum(@NotNull int a, int b) {
    return a + b;
  }

  public static void main(String args[]) {
    JavaNotNull jnn = new JavaNotNull();
    System.out.println("The sum is: " + jnn.sum(5, 5));
  }
}

출력:

The sum is: 10

위의 예에서 @NotNull에 필요한 패키지를 import javax.validation.constraints.NotNull;으로 포함시킨 다음 sum()이라는 메서드를 생성하여 해당 값을 로 설정했습니다. @NotNull.

sum() 메서드는 두 변수 간의 합계 연산 결과를 반환합니다. 그런 다음 JavaNotNull 클래스의 개체를 만들고 해당 메서드 sum()을 호출하여 위의 출력을 얻었습니다.

위 예제의 sum()null 변수를 전달하려고 하면 어떻게 되는지 생각하고 계십니까?

답은 위의 예에서 메서드 변수를 @NotNull로 설정했기 때문에 null 값을 받을 수 없다는 것입니다. 다음 업데이트된 예에서는 null 값을 sum() 메서드에 전달하여 어떤 일이 발생하는지 확인합니다.

업데이트된 예제 코드:

import javax.validation.constraints.NotNull;

public class JavaNotNull {
  int add(@NotNull int a, int b) {
    return a + b;
  }

  public static void main(String args[]) {
    JavaNotNull jnn = new JavaNotNull();
    // We are trying to pass a null value here
    System.out.println("The sum is: " + jnn.add(null, 5));
  }
}

이제 위의 코드 예제를 실행하려고 하면 아래와 같은 오류가 발생합니다. 메서드를 @NotNull로 설정했기 때문에 null 값을 받을 수 없습니다.

error: Class names, 'JavaNotNull', are only accepted if annotation processing is explicitly requested
1 error

중요한 참고 사항은 null 값으로 메서드를 호출하고 해당 메서드가 @NotNull로 설정된 경우입니다. 런타임에 NullPointerException이 발생할 수 있습니다.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn