LINUX.ORG.RU

Java + теоретический вопрос


0

0

public class A{
	interface I{
		void foo();
	}
	class B implements A.I{
		public void foo(){
			System.out.println("Foo!");
		}
	}
	public static void main(String arg[]){
		((new A()).new B()).foo();
	}
}

меня интересует синтаксис создание объекта класса B, в данном случае это выглядит, как вызов метода new у объекта класса А /грубо говоря/. Т.е. new здесь вроде как поле класса А, что никак не лепится с рарезервированностью слова new. Или разработчики явы по-другому просто не придумали :) ? Разъястине, пожалуйста.
★★★★★

http://c2.com/cgi/wiki?InnerClasses В отличие от C++ экземпляр B может существовать только в контексте экземпляра родительского класса А. Что касается синтаксиса, то видимо разработчики выбрали именно такой странным способ явного указания родителя, если экземпляр внутреннего класса создается там, где A.this недоступно (в данном случае статическая функция)

anonymous
()
Ответ на: комментарий от anonymous

>являются специальными хаками в синтаксисе

угу, в статик методе подругому фуу не вызвать.

Pi ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.