Как объявить имя параметра с зарезервированным ключевым словом в Java

Мне нужно объявить такой метод:

public void doSomething(Class class) {
...
}

и, конечно же, имя параметра class недействительно, поскольку это зарезервированное ключевое слово. Однако в C # я могу избежать этого, используя символ @ в качестве префикса. Используя @, я не только могу «решить» его, но и при компиляции на уровне «байт-кода» (IL) имя будет лишено символа @.

Что-нибудь подобное в Java? Все, что я нашел, это _ и $. Знак доллара самый уродливый из всех, ИМХО.


Позднее редактирование: я знал о clazz штуке, но не упомянул о ней, надеясь на что-нибудь получше. Если это лучший вариант, пусть будет так. Однако есть ли какая-то таблица соответствия для всех зарезервированных ключевых слов? Что-то вроде:

класс -> класс, клаз

переключатель -> свитч, сввич ...


Позднее редактирование 2. Удивительно, сколько язвительных комментариев и бесполезной информации может породить законный, ИМХО, вопрос. Я почти сожалею об этом.


Позже редактировать 3. Похоже, что в мире Java лучше всего заткнуться и ничего не спрашивать. Никого не беспокойте и, даже если никто не задал / не ответил на определенный вопрос, молчите и не разговаривайте.


person Andrei Rînea    schedule 13.11.2013    source источник
comment
имя class действительно для вас обязательно?   -  person Julien    schedule 13.11.2013
comment
Нет, я просто пытался найти ограничения языка, чтобы смоделировать свой код как можно ближе к своему вкусу.   -  person Andrei Rînea    schedule 13.11.2013
comment
Я рекомендую сменить язык программирования, чтобы ОКР мог полностью вас контролировать.   -  person Kayaman    schedule 13.11.2013
comment
меняете Java? Как такое возможно ?!   -  person Andrei Rînea    schedule 13.11.2013
comment
Нет, используя другой язык программирования.   -  person Kayaman    schedule 13.11.2013
comment
Это был сарказм.   -  person Andrei Rînea    schedule 13.11.2013
comment
Однако есть ли какая-то таблица соответствия для всех зарезервированных ключевых слов? clas также иногда используется для class. Для byte люди используют b или value. Вот и все, что касается стандартных замен. switch действительно не подходит.   -  person Boann    schedule 13.11.2013
comment
Если вы не против небольшой запутанности (и ненависти со стороны других программистов), просто используйте некоторые заменяющие символы Юникода, например U + 0455 для s: public static void frobnicate(Class claѕѕ) работает нормально. Более удобочитаемы claśś clașș или claʂʂ. Я предоставляю вам найти их символы Юникода :-)   -  person Gyro Gearless    schedule 13.11.2013
comment
Меня озадачивают ваши неоднократные правки с жалобами на язвительные комментарии. Никто ничего не говорит.   -  person Boann    schedule 15.11.2013


Ответы (5)


Нет. Никакого выхода. Ключевые слова зарезервированы и не могут быть использованы. Экранирование с помощью какого-то странного префикса (например, в C #), на мой взгляд, не является правильным решением, поскольку это делает код просто уродливым и менее читаемым.

Вы можете использовать type или clazz в вашем особом случае.

person isnot2bad    schedule 13.11.2013

Стандарт де-факто - Class clazz. Вы увидите это во многих API.

person Kayaman    schedule 13.11.2013
comment
точно! Я это видел, и меня чуть не стошнило ...: -S - person Andrei Rînea; 13.11.2013
comment
Я скорее искал какое-то общее решение. Что делать, если мой параметр называется переключателем? - person Andrei Rînea; 13.11.2013
comment
Если это ваши самые большие проблемы, то вы самый удачливый программист, которого я встречал. - person Kayaman; 13.11.2013
comment
Я знаю, что clazz является стандартным, но я всегда использовал klass. Намного менее уродливо. - person Boann; 13.11.2013
comment
класс определенно класснее ... так сказать;) - person Andrei Rînea; 13.11.2013
comment
Мне платят в зависимости от функциональности моего кода. Я не допускаю, чтобы она участвовала в конкурсе «Мисс Код Вселенная». Тратить время на выбор между классом / классом / классом - это время, когда вы не делаете что-то полезное с кодом. - person Kayaman; 13.11.2013
comment
Извини, что зря потратил время. - person Andrei Rînea; 13.11.2013

Распространенным соглашением является неправильное написание имени параметра. В вашем случае вы должны вызвать параметр clazz:

public void doSomething(Class clazz) {
...
}

Я знаю, что это уродливо, но это решение принято сообществом Java.

person mariosangiorgio    schedule 13.11.2013

Вы не можете использовать ключевые слова в качестве имени параметра или имени переменной в java (так же чувствительно).

Есть несколько альтернатив:

  • Измените регистр параметра. В Java учитывается регистр, поэтому параметр не рассматривается как зарезервированное слово.
  • Используйте другое имя, которое звучит так же, как зарезервированное слово.
person Ankur Shanbhag    schedule 13.11.2013

Ваше решение clazz. Это более читабельно.

public void doSomething(Class clazz) {
 ...
}
person user2986555    schedule 13.11.2013