[java] JSR 305을 활용한 자바 코드 안정성 향상 예시

JSR 305은 자바 코드의 안정성을 향상시키기 위한 어노테이션들을 제공하는 스펙입니다. 이를 활용하면 변수의 null 여부를 명확하게 표현하고, 메소드의 반환 값이나 인자에 대한 조건을 명시할 수 있습니다. 이번 포스트에서는 실제 예시 코드를 통해 JSR 305의 활용법을 알아보겠습니다.

어노테이션 추가하기

JSR 305의 어노테이션을 활용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Gradle을 사용한다면 다음과 같이 의존성을 추가할 수 있습니다:

dependencies {
    implementation 'com.google.code.findbugs:jsr305:3.0.2'
}

Maven을 사용한다면 다음과 같이 의존성을 추가할 수 있습니다:

<dependencies>
    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
    </dependency>
</dependencies>

예시 코드

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class Person {
    private String name;

    public Person(@Nonnull String name) {
        this.name = name;
    }

    public void setName(@Nullable String name) {
        this.name = name;
    }

    public void sayHello() {
        if (name != null) {
            System.out.println("Hello, " + name + "!");
        }
    }
}

위 예시 코드에서는 JSR 305의 @Nonnull@Nullable 어노테이션을 사용하여 변수의 null 여부를 명시하고, 메소드의 매개변수에서 null 값을 허용하는 것을 표시하였습니다.

@Nonnull 어노테이션은 해당 변수가 절대로 null이 될 수 없다는 것을 의미합니다. 위의 예시 코드에서는 Person 클래스의 생성자 매개변수인 name의 경우 @Nonnull 어노테이션을 사용하여 null 값이 들어오지 않도록 제한하였습니다.

@Nullable 어노테이션은 해당 변수가 null 값이 허용된다는 것을 의미합니다. 위의 예시 코드에서는 setName 메소드의 매개변수인 name의 경우 @Nullable 어노테이션을 사용하여 null 값을 허용함을 표시했습니다.

코드 분석 도구와의 통합

JSR 305의 어노테이션을 활용하면 코드 분석 도구와의 통합이 용이해집니다. 예를 들어, FindBugs나 IntelliJ IDEA와 같은 도구들은 JSR 305 어노테이션을 인식하여 코드에서 발생할 수 있는 오류를 미리 예방하고 경고를 표시할 수 있게 됩니다.

참고 자료

위 예시 코드와 관련된 자세한 내용과 더 많은 예시 코드를 확인하기 위해서는 위의 참고 자료를 참조하시기 바랍니다. JSR 305은 자바 코드의 안정성을 향상시키기 위한 유용한 도구입니다.