나는 본 적이 이 질문을하지만의 사용에 대한 몇 가지 더 질문이 assert
키워드. 나는 다른 코더들과 사용하는 것에 대해 토론했다 assert
. 이 유스 케이스의 경우 특정 전제 조건이 충족되면 널을 리턴 할 수있는 메소드가있었습니다. 내가 작성한 코드는 메서드를 호출 한 다음 null을 반환하지 않고 반환 된 객체를 계속 사용한다고 주장합니다.
예:
class CustomObject {
private Object object;
@Nullable
public Object getObject() {
return (object == null) ? generateObject() : object;
}
}
이제 다음과 같이 사용한다고 상상해보십시오.
public void useObject(CustomObject customObject) {
object = customObject.getObject();
assert object != null;
// Do stuff using object, which would throw a NPE if object is null.
}
나는 프로덕션 코드에서 절대 사용 assert
해서는 안되며 테스트에만 사용해야한다는 것을 제거해야한다고 들었습니다 . 그게 사실입니까?
Objects.requireNonNull
자바 8 참조).
-ea
또는 이와 동등한 방식 으로 명시 적으로 활성화해야합니다 .