【问题标题】:Dealing with non-public classes in Eclipse在 Eclipse 中处理非公共类
【发布时间】:2011-09-12 10:00:38
【问题描述】:

Java 中的非公共顶级(即包私有)类不需要匹配文件名(例如,类 Foo 可以在 Bar.java 中定义)。我认为这样的功能不再有用了(因为嵌套类是多年前引入的)。

有时它会导致问题:在一些重构之后,我以文件名与它们的类名不匹配结束,这让我(在提交时)和 Eclipse(有些文件没有重新编译,尽管他们不得不重新编译)感到困惑。

有没有办法在 Eclipse 中禁止此类类?

【问题讨论】:

  • 您使用的是什么版本的 Eclipse?您是说如果类名与文件名不同,Eclipse 不会编译受包保护的类?
  • 我使用的是 3.7.0,但提到的重新编译问题发生在前一段时间(我无法重现)。从那以后,我一直避免使用非公开课程,但现在我想尽可能多地再次使用它们。
  • 我也无法重现编译问题。但是我不知道如何让 eclipse 验证非公共类的文件名。但是,我个人不知道有什么方法可以做到这一点。少数错误/警告设置位于window > preferences > Java > Compiler > Errors/Warnings 下,但没有任何东西可以解决您的问题。我认为这可能是因为 Eclipse 无法判断这是否是内部类。将类公开但所有方法不公开(包括构造函数)会有帮助吗?

标签: java eclipse class


【解决方案1】:

我推荐使用Checkstyle,它还有一个非常好的Eclipse 插件eclipse-cs。在给定检查配置的 eclipse-cs 配置中,在 Miscellaneous 下,有一个可以启用的“外部类型文件名”检查,描述为“检查外部类型名称和文件名是否匹配。例如,类 Foo 必须在名为 Foo.java 的文件中。”。

为了真正“禁止此类类”,甚至可以将此检查设置为具有“错误”严重性(默认情况下,将阻止构建,至少在 Eclipse 中) - 而不是默认的“警告”严重性.

作为一个额外的好处,使用 Checkstyle 不会限制您在 Eclipse 中运行此检查。 Checkstyle 可以轻松集成到各种构建工具(例如 Apache Maven)中,即使您或其他用户未使用 Eclipse,也可以检查此问题。

【讨论】:

  • 我试过了……但我对这个插件一点也不满意。它会检查 eclipse 所做的一切,所以我会收到两次警告。它有数以百万计的检查,默认情况下所有检查都打开,并且无法在全局范围内关闭它们。它让我的日食慢得像地狱一样......
  • 你最后一次尝试是什么时候?当然有一种方法可以全局切换检查,甚至可以启用/禁用每个项目的 Checkstyle,或者为每个项目设置特定的检查配置。如果您愿意,您甚至可以只检查这一问题。
  • 可能一周前?我从你的回答中了解到。事实上,我一直在寻找一种方法来关闭所有警告并仅启用一个,但除了单击除一个之外的所有复选框外,没有其他方法。我日食的减速让我不愿意用它做任何事情。也许它与龙目岛的互动很糟糕,或者其他什么。也许我会在重新安装后再试一次。
猜你喜欢
  • 2020-03-18
  • 1970-01-01
  • 2014-08-15
  • 2011-01-30
  • 2011-02-14
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多