Зарезервированные слова как имена или идентификаторы - PullRequest
22 голосов
/ 08 января 2009

Есть ли хитрый способ использовать зарезервированные слова Java в качестве имен переменных, методов, классов, интерфейсов, пакетов или перечислений?

Ответы [ 14 ]

2 голосов
/ 08 января 2009

Невозможно использовать зарезервированные слова с компилятором javac .

Технически, вы можете редактировать имена внутри файла класса, как только он будет скомпилирован , чтобы быть чем угодно: на этом этапе виртуальной машине все равно, потому что она больше не работает с исходным кодом. Я полагаю, что некоторые обфускаторы используют эту технику.

2 голосов
/ 08 января 2009

Достаточно плохо, что некоторые регистрозависимые языки допускают следующие вещи:

class New;

class Something
{
    New makeNew()
    {
      return new New();
    }
}

Но почему вы захотите написать такую ​​строку кода:

class new;

class Something
{
    bool if;

    new makeNew()
    {
        return if ? new new() : null;
    }
}

Просто взгляните на подсветку синтаксиса. Даже это запутано!

1 голос
/ 12 сентября 2012

В Scala вы можете использовать backticks. Например: myVarialbe.`class`

0 голосов
/ 26 ноября 2018

Если вам действительно нужно использовать поле / локальную переменную / метод с именем, совпадающим с зарезервированным словом, я предлагаю добавить подчеркивание в конце имени:

// JPA entity mapping class:

private Boolean void_;

public Boolean getVoid_() { ... }
void setVoid_(Boolean void_) { ... }

Это более читаемый выбор (ИМХО), чем добавление символов в начале имени (fVoid, aVoid, vVoid и т. Д.)

Приведенный выше код является реальным случаем, который произошел со мной при работе с устаревшей базой данных, в которой таблица invoice имела поле с именем void, указывающее, был ли документ аннулирован или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...