Я тільки почав вивчати Java.
Мій друг, який допомагає мені вчитися, щойно надіслав мені це і сказав "розгадай".
На жаль, я не можу прочитати це. Мені здається Perl.
class _{_ _;_(){_=this;}}
Що це означає?
Я тільки почав вивчати Java.
Мій друг, який допомагає мені вчитися, щойно надіслав мені це і сказав "розгадай".
На жаль, я не можу прочитати це. Мені здається Perl.
class _{_ _;_(){_=this;}}
Що це означає?
Відповіді:
_
- це назва класу. Це дуже заплутане, але це працює!
З перейменованим класом:
class Something {Something something;Something(){something=this;}}
І прибрали:
class Something {
Something something;
Something() {
something=this;
}
}
І ви можете збожеволіти від цього дивного імені :)
class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}
Насправді Unicode навіть підтримується, тому це дійсно:
class 合法類別名稱{合法類別名稱(){}}
get crazy
прикладі мало помилок . (1) ви забули додати крапку з комою після ____=__
(два рази), (2) якщо ви намагаєтесь перевантажити _
метод, то вам потрібно також передати тип, так і _(___)
повинно бути _(_ ___)
. Ось як це може виглядати class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__ = ___;}}
. Почекай хвилинку. Чи я щойно налагоджував підкреслення? Настав час гальма.
_
це ім'я класу, підкреслення - дійсне ім'я змінної Java, вам просто потрібно відступити свій код, щоб його деобфускатировать:
class _{
_ _;
_(){
_=this;
}
}
Подібно до:
class A{
A A;
A(){
A=this;
}
}
Редагувати: завдяки @Daniel Fischer
Імена типів та імена змінних мають різні простори імен. і, наприклад, код
class FOO { FOO FOO; }
дійсний на Java.
Резюме
_
- це назва класу, наприклад, class _{
_
- це ім’я члена класу, наприклад, на _ _;
та_=this
_
- це назва конструктора, наприклад at _()
Пам'ятайте: Java використовує шість різних просторів імен:
- Імена пакетів,
- імена типів,
- імена полів (змінних),
- імена методів,
- локальні імена змінних (включаючи параметри) та
- етикетки.
Крім того, кожен оголошений перелік має власний простір імен. Ідентичні назви різних типів не суперечать; наприклад, метод може бути названий так само, як і локальна змінна .
class FOO { FOO FOO; }
робіт.
data Foo = Foo | Bar Int
працює. Звичайно, це може працювати лише на тих мовах, де категорію ідентифікатора можна з’ясувати з того місця, де він з’являється.
ну це хороший приклад. Java дозволяє Unicode бути ідентифікаторами, щоб ви могли написати щось на зразок:
class ⲥlass {
ⲥlass claѕѕ;
}
тут назва класу c - 'ⲥ' (U + 2CA5 КОПТИЧНИЙ МАЛИЙ ЛІТЕР SIMA) і
назва об'єкта 'ѕ' (U + 0455 КИРИЛИЧНИЙ МАЛИЙ ЛІТЕР DZE).
class
, це ключове слово.
'class'
. як я вже згадував , що ім'я об'єкта 'claѕѕ'
має , 'ss'
які не є символами ASCII. так насправді ім'я об'єкта полягає в claѕѕ
тому, що cla\u0455\u0455'
я думаю, це очищає непорозуміння. :)