我正在尝试测试以下情况:
- 有一个主要的。(
city.Main
) - 有一个包。(
package castle
) - 在包中,有一个公共类(
castle.Guard
)和一个包私有类(castle.Princess
)。 - 如果公共类返回私有类的实例怎么办?
这是我的代码:
主.java
package city;
import castle.Guard;
public class Main {
public static void main(String[] args) {
Princess princess = Guard.getPrincessStatic();
// Error: Princess cannot be resolved to a type
Guard.getPrincessStatic().sayHi();
// Error: The type Princess is not visible
Guard guard = new Guard();
guard.getPrincess().sayHi();
// Error: The type Princess is not visible
guard.getPrincessMember().sayHi();
// Error: The type Princess is not visible
}
}
Guard.java
package castle;
public class Guard {
public Princess getPrincess() {
return new Princess();
}
public static Princess getPrincessStatic() {
return new Princess();
}
private Princess m_princess = new Princess();
public Princess getPrincessMember() {
return m_princess;
}
}
公主.java
package castle;
class Princess {
public void sayHi() { System.out.println("Hi world"); }
}
请注意,其中的所有 4 个语句main()
都有错误。
我也做过一些研究。事实上,我想模仿这个答案。但我不明白为什么我的代码会抛出错误。
感谢您的任何解释!
编辑:
我打算将castle-Princess
package-private设为私有。我知道,通过从包中返回包私有类,我应该为错误做好准备。但是为什么这个答案有效,而我的答案无效?