次の状況をテストしようとしています。
- メインがあります。(
city.Main
) - パッケージがあります。(
package castle
) - パッケージ内には、public クラス (
castle.Guard
) とpackage-privateクラス (castle.Princess
) があります。 - パブリック クラスがプライベート クラスのインスタンスを返す場合はどうなるでしょうか。
これが私のコードです:
Main.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;
}
}
プリンセスジャバ
package castle;
class Princess {
public void sayHi() { System.out.println("Hi world"); }
}
の 4 つのステートメントすべてにmain()
エラーがあることに注意してください。
私もいくつかの研究を行ってきました。実際、私はこの答えを模倣したいと思っています。しかし、コードがエラーをスローする理由はわかりません。
説明をありがとう!
編集:
castle-Princess
package-privateにするつもりです。package-privateクラスをそのパッケージから返すことで、エラーに備える必要があることはわかっています。しかし、なぜその答えが機能するのに、私の機能は機能しないのですか?