class ABC {
int x;
static ABC y = new ABC();
}
public class XYZ {
public static void main(String[] args) {
ABC q = new ABC();
q.x = 5;
System.out.println(q.x);
}
}
誰かが、コードの実行時に何が起こるか(ステップバイステップ)を説明できますか?独自の型の静的メンバーを持つクラス
また、static
キーワードがインスタンスy
より前に削除された場合、StackOverflowエラーが発生します。 static
キーワードが存在すると、これはなぜ発生しませんか?
ありがとうございます。
あなたの宿題ですか、このコードを正確に理解できないのですか? –
'static'を削除すると、' ABC'インスタンスにはそれ自身の 'y'フィールドがあります。つまり、作成されたすべての' ABC'インスタンスに対して 'y'値に新しい' ABC'インスタンスが必要です。新しい 'y'値を必要とする新しい' ABC'インスタンスを作成します。新しい 'y'値を必要とする新しい' ABC'インスタンスを作成しますので、新しい 'ABC'インスタンスを作成します。新しい 'y'値を必要とするので、新しい' y'値を必要とする新しい 'ABC'インスタンスを作成します。新しい' y'値を必要とする新しい 'ABC'インスタンスを作成します。' StackOverflowError' !!! – Andreas
これは、SingleTonパターンを不適切に使用しようとするようなものです:p – WilomGfx