Я думаю, было бы сложно автоматически сгенерировать функциональные нулевые объекты.(Конечно, вы могли бы создать оболочки, которые затем пошли бы и заполнить саму реализацию).
В качестве быстрого примера - какова нулевая функциональность для метода, который возвращает int
?Должен ли он возвращать -1, 0 или, возможно, какое-то другое значение?Как насчет того, что возвращает строку - опять же, null
или ""
правильный выбор?Для методов, возвращающих какой-то другой класс - если это один из ваших собственных классов, то, вероятно, вы могли бы использовать Null Object для этого класса, но как бы вы получили к нему доступ?Возможно, вы могли бы заставить каждый класс, который вы пишете, реализовывать некоторый интерфейс с аксессором для нулевого объекта, но стоит ли это того?
Даже с методами, которые возвращают void
, не всегда так, чтобы нулевая функциональность былапросто вернуться.Например, некоторым классам может потребоваться вызвать метод для родительского / делегатского объекта, когда они сделали свое дело (что в данном случае будет неактивным), чтобы сохранить инварианты.класса.
Таким образом, в основном - даже для реализации "нулевого" поведения, вы должны быть в состоянии вывести, каково это поведение, и я ожидаю, что это слишком продвинуто для того, чтобы инструмент сам себя сделал.Возможно, вы могли бы аннотировать все ваши методы чем-то вроде @NullReturns(-1)
, и иметь инструмент, подобрать их и сформировать реализацию нулевого объекта, но даже это не будет охватывать каждую ситуацию, и вы также можете написать объект напрямую, а не писать всеего функциональность в аннотациях.