我正在忙着升级一个古老的java应用程序,在编译之后我开始重新组织代码结构。目前在一个大型文件夹中有500个文件,因此我需要将其拆分为更整洁的文件夹结构。当我移动一些文件时,编译器会生成大量"X() is not public in <BaseClass>"
个错误。是的,重构工具向双方添加了包语句和导入,
显然,每个班级的所有成员都具有隐含的可见性,即:
void setSelection(int x){...}
除了手动添加可见性属性外,还有更快的方法可以通过减少编辑来解决问题吗?
public void setSelection(int x){...} /// Yay! only 5000 more occurrences to go!
答案 0 :(得分:1)
您可以使用正则表达式尝试使用NetBeans进行搜索替换。 我不太了解Netbeans,但我知道它是可能的,而且日食相当不错。 提示:在验证替换之前观看预览。
例如,在您的情况下,您可以使用它:
search regex = (^[^\n\w]*void\s.*$)
replacement = public $0
如果您有其他事情,那么&#34;无效&#34;作为你的方法的回报,你可以替换&#34; void&#34;通过与您的返回类型更相关的表达式。
答案 1 :(得分:1)
我认为你应该手工解决这个问题。对于每个班级和班级成员,判断访问应该 {/ 1}},public
,protected
还是包私有。创建/修复模块化和抽象边界并不是我对哑工具的信任。
是的,如果您有数百条错误消息,那么您需要解决很多问题。但最终的结果将是质量更好的代码...而不是盲目地将所有包私有更改为private
的内容。