.? оператор теоретически возможен в java?

Я знаю, что Java не поддерживает перегрузку операторов, но кажется, что в других языках есть несколько операторов, которые потенциально могут принести пользу Java.

Вероятно, мой любимый пример — оператор .?. Доступ к членам объекта осуществляется только с использованием .?, если объект не является нулевым:

public void example(String arg)
{
    if(arg != null && arg.equals("quit"))
        ...
}

Можно сократить до

public void example(String arg)
{
    if(arg.?equals("quit"))
        ...
}

Оператор .? (по крайней мере, имхо) легко читается и устраняет дополнительный код, который иногда может ухудшить читабельность кода. В некотором коде может быть несколько проверок нулевого состояния объекта или параметра, что может привести к ненужным и чрезмерным отступам во всех блоках кода.

Очевидно, это не было бы революционным изменением, но, насколько я понимаю, .? можно было бы универсально применять ко всем подклассам Object. Я ошибся? И будет ли это противоречить логике, используемой для решения, что Java не будет поддерживать перегрузку операторов, если она будет принята сейчас?


person Indigenuity    schedule 08.10.2012    source источник
comment
Нет, это определенно невозможно интегрировать в Java как есть. Однако некоторые языки, которые компилируются в Java или байт-код Java, имеют подобные вещи.   -  person Louis Wasserman    schedule 09.10.2012
comment
Для Project Coin был предложен так называемый оператор Элвиса: mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html Я не уверен, будет ли на самом деле включена вторая часть функций Coin, которые появятся в Java 8. хотя.   -  person Natix    schedule 09.10.2012
comment
Проблема в том, что когда вы пытаетесь написать предложение else... В чем причина перехода к else? equals() возвращает false или аргумент имеет значение null? Обычно это неправильная хорошая идея   -  person Aubin    schedule 09.10.2012
comment
Но вы можете написать это if(quit.equals(arg)) потому что equals выполняет нулевую проверку. Но я предполагаю, что вам нравится поддерживать больше операций и методов.   -  person daniel    schedule 09.10.2012
comment
Разве это не должно быть ?.? Кроме того, если arg равно null, то arg?.equals("quit") будет null, но if ожидает логическое значение.   -  person ddekany    schedule 09.10.2012
comment
К сожалению, Java довольно многословен, и краткость далеко не его сильная сторона. И я не вижу, чтобы такие функции, как та, которую вы описываете, легко интегрировались в нее.   -  person b2Wc0EKKOvLPn    schedule 09.10.2012
comment
аналогично stackoverflow.com/questions/4390141/   -  person hatchet - done with SOverflow    schedule 09.10.2012