Нет, нет никакого пути. Вот почему они маркированы "зарезервированными".
Нет никакого способа использовать зарезервированные слова с компилятор javac .
Технически, Вы можете редактировать имена в файле класса, как только он скомпилировал , чтобы быть чем-либо, что Вы хотите: на том этапе не заботится VM, потому что это не имеет дело с исходным кодом больше. Я полагаю, что некоторые obfuscators используют эту технику.
Не уверенный, что Вы пытаетесь сделать, но $ является допустимым символом в идентификаторах, таким образом, Вы могли сделать, сказать:
int $return = 5;
Это выглядит немного странным, но это действительно работает.
Это достаточно плохо, некоторые чувствительные к регистру языки позволяют вещи как следующее:
class New;
class Something
{
New makeNew()
{
return new New();
}
}
, Но почему был бы Вы когда-либо хотеть быть в состоянии записать строку кода как это:
class new;
class Something
{
bool if;
new makeNew()
{
return if ? new new() : null;
}
}
Просто смотрят на подсветку синтаксиса. Даже это запутывается!
Да, существует. Необходимо использовать зарезервированные слова от будущего. Как то, что произошло с различными названными методами, утверждают () в пред1.4 кодах.
Hope это помогает!
Нет, Вы не можете сделать этого. Для получения дополнительной информации перейдите в Разделы JLS 3.8, 3.9
, следующие последовательности символов, сформированные из букв ASCII, резервируются для использования в качестве ключевых слов и не могут использоваться в качестве идентификаторов (В§3.8):
Keyword: one of abstract continue for new switch assert default if package synchronized boolean do goto private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while
Строго говоря Вы не можете, если Вы не достаете ошибочную реализацию компилятора, которая не придерживается спецификации языка Java.
, Но где существует желание, существует путь. Копия следующий код в Ваш IDE, переключите кодирование исходного файла на UTF-16, и здесь мы идем:
public class HelloWorld {
public static void main(String[] args) {
HelloWorld.nеw();
}
public static void nеw () {
System.out.println("Hello,World");
}
}
Этот код является правильно построенным и допустимым классом Java. Однако, поскольку Вы предположили, что существует немного приема: символ 'Рµ' в "новом" идентификаторе не принадлежит набору символов ASCII, это - на самом деле cyrrilic 'Рµ' (prounanced 'ВЫ').
Текущая спецификация языка Java явно разрешает, и это важный момент для создания, использование Unicode для именования идентификаторов. Это означает, что у каждого есть способность свободно позвонить ей или его классам на французском, Chinise или русском языке, если они желают. Это также возможно к смешиванию и подгонке алфавиты в коде. И исторически, некоторые буквы в латинском и других алфавитах являются двойниками.
В результате: нет, Вы не можете использовать зарезервированные слова в качестве идентификаторов, но можно использовать идентификаторы, которые точно походят на зарезервированные слова.
, Должен ли кто-либо делать, это - полностью другой разговор.
Чаще всего эта проблема предстает перед "классом", в этом случае это обычно для записи "clazz".
Это - допустимый вопрос. Такая вещь возможна на других языках. В C# снабдите префиксом идентификатор @
(, как спросили прежде ); в Дельфи, префиксе с &
. Но Java не предлагает такой функции (частично, потому что он не должен действительно взаимодействовать с идентификаторами, определенными другими языками путем.Net мир делает).
Ха? Почему Вы хотели бы сделать это? Можно записать им в l33t, который одурачит компилятор.
class cl4ss {
String r3turn() {
return "but why?";
}
}
PL / 1 (язык программирования мэйнфреймов IBM 1960-х годов, который существует и по сей день), как известно, требовал, чтобы, хотя некоторые слова действовали как ключевые слова в определенных контекстах, все слова могли использоваться как идентификаторы. Это даже не так сложно сделать в парсере, если вы намереваетесь быть последовательным в этом. PL / 1 считался довольно большим языком, и комитет по языкам беспокоился, что многие программисты не выучат его полностью, а затем будут удивлены, когда попытаются использовать ключевое слово из части, которую они не знали в качестве идентификатора. . Таким образом, вы можете написать что-то вроде:
IF BEGIN=ELSE THEN CALL=3 ELSE CALL FOO(ENDIF) ENDIF
Как отмечали здесь другие, возможность делать это не является рекомендацией.
Разработчики Java решили, что количество ключевых слов в языке было скромным, и зарезервировали набор. Они даже зарезервировали «GOTO», что фактически недопустимо ни в одной реальной Java-программе.