【问题标题】:Eclipse generates Java class filename conflict for inner classesEclipse为内部类生成Java类文件名冲突
【发布时间】:2014-11-26 19:02:41
【问题描述】:

我有两个顶级课程;每个都有一个同名的内部类:

    **A.java**
    public class A
    {
    }
    class TestCase
    {
    }

    **B.java**
    public class B
    {
    }
    class TestCase
    {
    }

我的期望是我最终会得到四个类文件,包括 A$TestCase.class 和 B$TestCase.class,这是我从命令行编译时得到的。然而,Eclipse 只是创建 TestCase.class,并在我尝试编译 B.java 时声明“TestCase 类型已定义”。

我是否可以设置一个 Eclipse 选项来生成(我认为是标准的)A$TestCase.class 和 B$TestCase.class?

谢谢。

顺便说一句,我正在使用 Luna: 版本:Luna 版本 (4.4.0) 内部版本号:20140612-0600

【问题讨论】:

  • 为什么不声明一个TestCase 接口或抽象类并为AB 实现它?

标签: java eclipse


【解决方案1】:

TestCase 的两个版本都是顶级类。你需要创建内部类

public class A {
    class TestCase {
    }
}

【讨论】:

  • 好吧,它不是一个内部类(这是我有一段时间的另一个问题:它叫什么?)。然而,从命令行调用的 Java 编译器会生成 A$TestCase.class 和 B$TestCase.class。我怎样才能说服 Eclipse 做同样的事情?
  • Eclipse 将生成与命令行编译器相同的“美元文件”
【解决方案2】:

它不适合我。它应该创建一个A$TestCase.class 和一个B$TestCase.class

但这只是当它们实际上是内部类时......在你的情况下,它们根本不是真正的内部类。

【讨论】:

    【解决方案3】:

    TestCase 并不是您想象的那样是一个内部类,这就是为什么在编码时格式化代码是必不可少的。检查this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2011-04-17
      • 2017-08-27
      相关资源
      最近更新 更多