Có 3 câu hỏi về null trong Java mình thắc mắc như sau:
Câu 1:
Nên check null ở đâu:
Input -> A -> B -> C-> D -> Output
Ví dụ
Input: Tên học sinh, lớp , trường... -> new Student(...) -> Classroom.addStudent(student) -> School.addClassroom(...) -> print(Classrooe)
Với ví dụ trên, với mỗi bước thì bất cứ bước nào arg là null thì đều không thể thực hiện được. Vậy mình nên kiểu tra null ở đâu:
- Kiểm tra null ở mọi hàm, hàm nào có args là null thì throw
IllegalStateException
- Kiểm tra null ở đầu vào, đầu vào không hợp lệ thì throw IllegalStateException, còn các bước trung gian, output thì ngầm định nó chỉ được gọi khi không null.
- Kiểm tra null ở đầu ra, các bước trước nếu không hợp lệ thì return null
(new Student (invalid args) sẽ trả về null, Classroom.addStudent(null) -> trả về null,
School.addClassroom(null) trả về null).
Câu 2: Liên quan câu 1, đó là khi args không hợp lệ thì mình nên throws IllegalStateException hay mình nên return null.
Câu 3:
Java 7 có 1 hàm là Objects.requireNonNull
, hàm này được implement như vầy:
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
Mình thắc mắc là nếu truy xuất 1 method mà pointer
là null thì nó vẫn throw NullPointerException thôi.
Ví dụ studentA.getName(), nếu studentA là null thì nó sẽ throw NullPointerException , vậy mục đích của việc throw new NullPointerException();
một cách trực tiếp để làm gì