@iskateli

Что за конструкция?

Встретил конструкцию вида
public static final Person NULL = new NullPerson();

что это значит и как читать?

текст из книги Брюс Эккель "Философия Java" (стр.488):

Простой пример: во многих системах существует класс Person, представляющий человека. Если в коде информация о человеке недо­ступна (или недостаточна), традиционно программист использует null в качестве значения ссылки. Вместо этого также можно создать null-объект. Но даже при том, что null-объект реагирует на все сообщения, на которые реагирует «настоящий» объ­ект, должен существовать какой-то способ проверки «null-объектности». Проще всего воспользоваться идентификационным интерфейсом:

//: net/mindview/util/Null.java 
package net.mindview.util; 
public interface Null {}

Такое решение позволяет использовать instanceof для обнаружения null-объектов
и, что еще важнее, не требует включения метода isNull во все классы (который по сути
будет моделировать RTTI — почему не воспользоваться встроенными средствами?).


//: typeinfo/Person.java 
// Класс с null-объектом, 
import net.mindview.util.*;
class Person {
  public final String first; 
  public final String last; 
  public final String address;
  // И т.д.
  public Person(String first, String last, String address){ 
  this.first = first; 
  this.last = last; 
  this.address = address;
}
public String toString() {
return "Person: " + first + " " + last + " " + address;
}
public static class NullPerson 
extends Person implements Null {
private NullPerson() { super("None", "None", "None"); } 
public String toString() { return "NullPerson"; }
}
public static final Person NULL = new NullPerson();
} 
//'.~
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@WaterSmith
Android-разработчик. Java, Kotlin
public static final Person NULL = new NullPerson();

Объявление публичного статического поля NULL, типа Person инициализированного объектом типа NullPerson.
Объект NullPerson, судя по всему является дочерним объектом класса Person, имплементирующим интерфейс Null
О чем и сказано в тексте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект