Java講習の季節なわけですが。
class A{ class B{} static class C{} void x(){ new B(); new C(); } static void y(){ new B();// <-これはダメ new C(); } }
で、x()でのnew B()はいいのにy()でのnew B()がダメなのはどうして?という質問があった。
もちろん「Bにstaticがついてないからダメ」で答えになる話ではなくて、「staticがついてないからダメなのはなんで?」という質問。
「staticがついてないものを使ってるときにはthisが省略されてる」ということからx()は
void x(){ this.new B(); new C(); }
のthisが省略されているということをベースに説明を進めてみた。
static void y(){ A a = new A() a.new B(); new C(); }
ならOKという感じで。
なかなか楽しかった。