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