Я знаю, что Java не поддерживает перегрузку операторов, но кажется, что в других языках есть несколько операторов, которые потенциально могут принести пользу Java.
Вероятно, мой любимый пример — оператор .?
. Доступ к членам объекта осуществляется только с использованием .?
, если объект не является нулевым:
public void example(String arg)
{
if(arg != null && arg.equals("quit"))
...
}
Можно сократить до
public void example(String arg)
{
if(arg.?equals("quit"))
...
}
Оператор .?
(по крайней мере, имхо) легко читается и устраняет дополнительный код, который иногда может ухудшить читабельность кода. В некотором коде может быть несколько проверок нулевого состояния объекта или параметра, что может привести к ненужным и чрезмерным отступам во всех блоках кода.
Очевидно, это не было бы революционным изменением, но, насколько я понимаю, .?
можно было бы универсально применять ко всем подклассам Object
. Я ошибся? И будет ли это противоречить логике, используемой для решения, что Java не будет поддерживать перегрузку операторов, если она будет принята сейчас?
?.
? Кроме того, еслиarg
равноnull
, тоarg?.equals("quit")
будетnull
, ноif
ожидает логическое значение. - person ddekany   schedule 09.10.2012