Tôi đã thấy câu hỏi này nhưng có thêm một vài câu hỏi về việc sử dụng assert
từ khóa. Tôi đã tranh luận với một vài lập trình viên khác về việc sử dụng assert
. Đối với trường hợp sử dụng này, có một phương thức có thể trả về null nếu đáp ứng các điều kiện tiên quyết nhất định. Mã tôi đã viết gọi phương thức, sau đó xác nhận nó không trả về null và tiếp tục sử dụng đối tượng được trả về.
Thí dụ:
class CustomObject {
private Object object;
@Nullable
public Object getObject() {
return (object == null) ? generateObject() : object;
}
}
Bây giờ hãy tưởng tượng tôi sử dụng nó như thế này:
public void useObject(CustomObject customObject) {
object = customObject.getObject();
assert object != null;
// Do stuff using object, which would throw a NPE if object is null.
}
Tôi đã nói rằng tôi nên loại bỏ assert
, rằng chúng không bao giờ nên được sử dụng trong mã sản xuất, chỉ được sử dụng trong thử nghiệm. Điều đó có đúng không?
Objects.requireNonNull
trong Java 8).
-ea
hoặc tương đương.