จะมีเหตุผล / สถานการณ์ใดบ้างที่ฉันควรใช้ object == null ทับ Objects.isNull () ในคำสั่ง if ?
ใช่เหตุผลหนึ่งคือเพื่อให้รหัสง่าย คำสั่ง ภายในถ้าobject == null
ชัดเจนและเป็นที่รู้จักกันดี ไม่สามารถนำไปสู่พฤติกรรมที่ไม่เหมาะสมใด ๆ เช่นมีการพิมพ์ผิด
ความเข้าใจของฉันคือ Objects.isNull () จะลบโอกาสในการกำหนดค่าว่างให้กับวัตถุโดยไม่ได้ตั้งใจโดยการละเว้น = ที่สอง
หากมีการif (object = null) {}
มีการละเว้น =
มันจะไม่รวบรวมหรือมันจะสร้างคำเตือนในกรณีของBoolean
วัตถุ! ที่จริงมีเหตุผลที่จะใช้ไม่มีObjects.isNull(object)
มากกว่าobject == null
ภายในถ้ามีคำสั่ง นี่คือสองรูปแบบเคียงข้างกัน:
if (object == null) {
}
if (Objects.isNull(object)) {
}
Objects.isNull () ควร จำกัด เฉพาะ Predicates หรือไม่?
อาจกล่าวได้ว่าใช่มัน จำกัด เฉพาะ Predicates เท่านั้นแม้ว่าจะไม่มีอุปสรรคทางเทคนิคในการใช้ไฟล์ Objects.isNull()
ทุกที่
จากpublic static boolean isNull(Object obj)
javadoc ของวิธีการ:
วิธีนี้มีอยู่เพื่อใช้เป็น java.util.function.Predicate, filter (Objects :: isNull)
ดังนั้นหากคุณใช้วิธีนี้ไม่ใช่เพรดิเคตคุณกำลังใช้นิพจน์ที่ซับซ้อนและยุ่งยากกว่าเมื่อเทียบกับแบบง่ายobject == null
มูลฐานคุณเป็นจริงโดยใช้ความซับซ้อนมากขึ้นและการแสดงออกยุ่งยากเมื่อเทียบกับที่เรียบง่าย
นี่คือตัวอย่างเพื่อเปรียบเทียบประโยชน์ของ Objects.isNull(object)
List<String> list = Arrays.asList("a", "b", null, "c", null);
long countNullsWithPredicate = list.stream().filter(Objects::isNull).count();
long countNullsWithLambda = list.stream().filter(object -> object == null).count();
long countNullsWithAnonymous = list.stream().filter(new Predicate<Object>() {
@Override
public boolean test(Object obj) {
return obj == null;
}
}).count();
if(null == variable)
อย่างสม่ำเสมอ ...