【发布时间】:2012-08-14 15:52:33
【问题描述】:
我做了一个实验,我扩展了一个 java.lang 包类,但无法访问包方法或字段(没有公共或受保护的方法或字段)。好的。
然后我将我的扩展放入源根目录的“java.lang”中并再次尝试并编译。所以包访问限制只是装饰性的(你需要把它和其他类放在同一个地方,因此用户可以通过导入 java.lang 找到它),它们实际上也可能是公共的,因为没有实际的较弱这里的访问级别? (protected 至少确保它是一个扩展覆盖)。
【问题讨论】:
-
你是如何“扩展包”的?
-
我不太明白。 在你把它放在正确的位置之前,你把它放在哪里?
-
我没有。我创建了一个 java/util 目录并将我的源文件放在那里。我要纠正那个。 @DaveNewton:我只是在我的项目中拥有它,而不是在任何包中。
-
我仍然不明白这个问题(并且在正确的包结构之外编译源代码应该不起作用)。感知到的保护问题是什么?应该/不应该做什么可以/不能做什么?
-
不正确。受保护的也适用于同一包中不相关的类。它严格地弱于默认值。
标签: java compilation package