Вообще, до настоящего времени я не встречался с вложенными классами и тем более не подозревал, что есть Inner(вложенные не static — классы) и Nested(вложенные static — классы). Максимум, что я мог привести в пример, это то, что у класса HashMap есть вложенный класс Entry. Вот в принципе и все.

Так продолжалось бы и дальше, пока я не стал работать с JAXB.
Давайте рассмотрим пример:

public class OuterClass {
	
	
	public static class NestedClass {
		
	}
	
	public class InnerClass {
		
	}
}

Здесь показаны вложенный nested класс NestedClass(т.к. он статический) и вложенный класс InnerClass (т.к. он НЕ статический)
Мы будем рассматривать только nested классы.

public class OuterClass {
	
	
	public static class NestedClass {
		public static void a1() {
			System.out.println("Вложенный статичкий метод в класс " + NestedClass.class.getSimpleName());
		}
		
		public void a2() {
			System.out.println("Вложенный НЕ статичкий метод в класс " + NestedClass.class.getSimpleName());
		}
	}
	
}

Вызов методов:

		//вызвать статический метод
		OuterClass.NestedClass.a1();
		
		//вызов не статического метода
		OuterClass.NestedClass ns = new OuterClass.NestedClass();
		ns.a2();

Вывод на консоль:

Вложенный статичкий метод в класс NestedClass
Вложенный НЕ статичкий метод в класс NestedClass

PS Впринце, этого достаточно, для начала работы с JAXB. Не очень хочется рассматривать примеры, что класс, который вложен в интерфейс по умолчанию статический. На данном этапе это не нужно. В будущем, если понадобится, напишу еще что-нибудь.

Реклама