【发布时间】:2010-06-17 07:33:46
【问题描述】:
在 Eclipse 3.5 中,假设我有这样的包结构:
tom.package1
tom.package1.packageA
tom.package1.packageB
如果我右键单击 tom.package1 包并转到 Refactor->Rename,“重命名子包”选项将显示为复选框。如果我选择它,然后将tom.package1 重命名为tom.red,我的包结构最终会是这样的:
tom.red
tom.red.packageA
tom.red.packageB
但我听说Java's packages are not hierarchical。 Java 教程back that up(参见关于包的表观层次结构的部分)。在这种情况下,Eclipse 似乎将包视为分层的。
我很好奇为什么访问说明符不能允许/限制访问 previous question 中的“子包”,因为我知道我以前在某处看到过“子包”。
那么 Eclipse 的重构工具是不是故意误导了易受影响的年轻人,从而助长了“子包”的神话?还是我在这里误解了什么?
【问题讨论】:
-
顺便说一句,默认情况下不检查“重命名子包”这一事实是一个很好的论据,他们没有试图误导任何人。
-
我没有注意到你注意到的行为,但这可能只是一个版本问题(我使用的是 3.6),如果不是的话:右键单击包资源管理器中的包并使用 Refactor 子菜单的 Rename 那里,它似乎具有您需要的效果(无论如何对我来说?)。
-
不,这不是版本问题,两个菜单项肯定会绑定到相同的代码,但是...实际上我认为您可能是对的。我刚刚尝试在包上删除,Eclipse 询问我是否还想删除“子包”(虽然这并不违反 JLS),如果选择了,那么它将删除,因为您注意到重命名(而不是重命名?)... . 奇怪???