【问题标题】:Indentation Checkstyle缩进检查样式
【发布时间】:2015-07-07 13:21:10
【问题描述】:

我正在尝试为缩进编写自定义的 checkstyle 检查。在这个过程中,我发现有一些缩进的代码已经被checkstyle完成了。但是,当我复制、粘贴该代码并尝试在我的 Eclipse 环境中运行它时。它无法正确编译。它向我显示了一些编译错误,例如“来自 HandlerFactory 类型的方法 clearCreatedHandlers() 不可见”我不知道如何解决此错误。这是我从

获得代码的来源

http://checkstyle.sourceforge.net/apidocs/src-html/com/puppycrawl/tools/checkstyle/checks/indentation/IndentationCheck.html#line.81

如果其他人可以复制、粘贴代码并尝试编译它并让我知道他们如何修复这些错误,这真的很有帮助。我经历了无数次尝试。

提前致谢。

【问题讨论】:

  • 不确定你想在这里做什么,但 HandlerFactory.clearCreatedHandlers 是私有的,所以你必须为你的班级使用相同的 pacakge com.puppycrawl.tools.checkstyle.checks.indentation跨度>
  • 如何使用反射?我也许可以用谷歌搜索这个。但是,如果您有更好的解释,请随时向我发送链接。非常感谢 ! :)

标签: reflection indentation private invisible sourceforge


【解决方案1】:

HandlerFactory.clearCreatedHandlers() 具有默认可见性。 (声明是void clearCreatedHandlers() - 请注意缺少publicprotectedprivate。)因此,如果您正在处理不同包中的代码,您将无法使用该方法。

您必须在同一个包中工作或找出另一种方法来完成该方法的作用。

ETA:来自@Haketo 的评论——您可以使用反射来调用此方法。 (谢谢你,Hacketo。)

【讨论】:

  • 或者可以使用反射在运行时将其公开。
  • @dcsohl 感谢您的回答以及 Hacketo。我明白你说的话。但是,反射在这里意味着什么?这是否意味着我只需要导入 com.puppycrawl.tools.checkstyle.checks.indentation.*;到我自己的包,比如 com.mytest; ?我试过这个但没有解决问题。我对更多细节感到好奇。非常感谢
  • 快速搜索 SO 会得到the information you are looking for...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 2016-08-23
  • 2012-10-25
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
相关资源
最近更新 更多