小编Grz*_*ski的帖子

如果存在内部类,则包含美元符号的Java类名无法编译

我已经定义了以下Java类:

mac-grek:javajunk grek$ cat A\$B.java
class A$B {}
mac-grek:javajunk grek$ cat A.java
public class A {
  public static class B {}
}
mac-grek:javajunk grek$ cat Main.java 
public class Main {

  public static void main(String[] args) {
    System.out.println(A.B.class.getName());
    System.out.println(A$B.class.getName());
  }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它们时,我得到以下错误:

mac-grek:javajunk grek$ javac 'A$B.java' A.java Main.java
A.java:2: duplicate class: A.B
  public static class B {}
                ^
Main.java:4: cannot find symbol
symbol  : class B
location: class A
    System.out.println(A.B.class.getName());
                        ^
Main.java:5: cannot find symbol
symbol  : class A$B
location: class …
Run Code Online (Sandbox Code Playgroud)

java

18
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×1