重构Java项目会导致数百个“X not public”错误

时间:2016-07-10 11:14:54

标签: java netbeans compilation java-7 visibility

我正在忙着升级一个古老的java应用程序,在编译之后我开始重新组织代码结构。目前在一个大型文件夹中有500个文件,因此我需要将其拆分为更整洁的文件夹结构。当我移动一些文件时,编译器会生成大量"X() is not public in <BaseClass>"个错误。是的,重构工具向双方添加了包语句和导入,

显然,每个班级的所有成员都具有隐含的可见性,即:

 void setSelection(int x){...}

除了手动添加可见性属性外,还有更快的方法可以通过减少编辑来解决问题吗?

 public void setSelection(int x){...} /// Yay! only 5000 more occurrences to go!

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式尝试使用NetBeans进行搜索替换。 我不太了解Netbeans,但我知道它是可能的,而且日食相当不错。 提示:在验证替换之前观看预览。

例如,在您的情况下,您可以使用它:

    search regex = (^[^\n\w]*void\s.*$)
    replacement = public $0

如果您有其他事情,那么&#34;无效&#34;作为你的方法的回报,你可以替换&#34; void&#34;通过与您的返回类型更相关的表达式。

答案 1 :(得分:1)

我认为你应该手工解决这个问题。对于每个班级和班级成员,判断访问应该 {/ 1}},publicprotected还是包私有。创建/修复模块化和抽象边界并不是我对哑工具的信任。

是的,如果您有数百条错误消息,那么您需要解决很多问题。但最终的结果将是质量更好的代码...而不是盲目地将所有包私有更改为private的内容。