在Eclipse 3.5中,假设我有这样的包结构:
tom.package1
tom.package1.packageA
tom.package1.packageB
Run Code Online (Sandbox Code Playgroud)
如果我右键单击tom.package1包并转到Refactor-> Rename,则会出现一个选项"Rename subpackages"作为复选框.如果我选择它,然后重命名tom.package1为tom.red我的包结构,最终会像这样:
tom.red
tom.red.packageA
tom.red.packageB
Run Code Online (Sandbox Code Playgroud)
但我听说Java的包不是分层的.Java教程将其备份(请参阅有关包的表观层次结构的部分).在这种情况下,Eclipse肯定会将包视为分层.
我很好奇为什么访问说明符不能允许/限制在前一个问题中访问"子包",因为我知道我之前曾在某处看过"子包".
Eclipse的重构工具是否通过推进"子包装"神话故意误导易受影响的年轻人?或者我在这里误解了什么?
在这种情况下,Eclipse不可能违反JLS,因为它与编译或运行Java源代码或字节码无关.
重构工具的行为与它们一样,因为这种行为对开发人员很有用.这种行为对开发人员很有用,因为对于许多意图和目的,我们确实将包视为层次结构(abc与ab有某种关系,即使这种关系在项目之间不一致).这并不意味着Java本质上将它们视为层次结构.
人们将包视为非常分层的一个例子是配置日志框架,例如log4j.同样,它不是log4j固有的,但这就是人们在实践中使用它的方式.
Java包在某种意义上不是分层的,因为从包A中导入所有内容并不会从包中导入所有内容A.B.
但是,Java包确实直接对应于文件系统上的目录结构,并且目录是分层的.所以Eclipse正在做正确的事情 - 它重命名目录,它自动更改重命名目录的子目录的父目录的名称(说明非常明显).
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |