【问题标题】:What does import class.1 mean?import class.1 是什么意思?
【发布时间】:2020-02-10 21:14:54
【问题描述】:

我在某人的代码中发现了类似的东西,想知道这到底是做什么的?

import some.package.MyClass.1;

然后被构造函数调用:

new 1(some, arguments);

此代码在 MyClass 类中。

import some.package.MyClass.1;
class MyClass {

  public MyClass() {
  }

  doSomethig(){
    someOperations...
    Files.walkFileTree(root, new 1(this, destination));
  }
}

编辑 此代码来自反编译 jar 文件。 如下所示 - 这可能是导致此类行为的原因。

【问题讨论】:

  • 没什么意思。它不编译。您是否省略了$
  • 1 不是 Java 中的有效标识符。此代码无法编译。如果它确实编译了(可能是_1l之类的),没有特殊含义,它只是一个(不寻常的)类名。
  • 不。这是我通过反编译 jar 文件收到的一个类。有没有可能因此而出现?
  • 代码可能被混淆了。反编译这样的类有机会给出不可编译的代码。
  • 啊……这就解释了。不保证反编译器生成有效的 Java 代码。

标签: java class import constructor


【解决方案1】:

这意味着有人犯了一个错误,因为1 在 Java 中不是一个有效的标识符。也许与您共享此代码的人想要隐藏他的类名并将原始名称替换为“1”。

标识符是 Java 字母和 Java 数字的无限长度序列,第一个必须是 Java 字母

[...]

“Java 字母”包括大写和小写 ASCII 拉丁字母 AZ (\u0041-\u005a) 和 az (\u0061-\u007a),以及由于历史原因,ASCII 下划线(_ 或 \u005f)和美元符号($,或 \u0024)。 $ 字符应仅用于机械生成的源代码中,或者很少用于访问遗留系统上预先存在的名称。

文档:Identifiers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多