publicclassOuter{ classInner{} staticclassStaticInner{} publicstaticvoidmain(String[] args){ Outer o = new Outer(); // Inner n = new Inner(); //error Inner i = o.new Inner(); StaticInner s = new StaticInner(); } }
classOther{ publicvoidf(){ Outer o = new Outer(); Outer.Inner i = o.new Inner(); Outer.StaticInner s = new Outer.StaticInner(); } }
interfaceSelector{ booleanend(); Object current(); voidnext(); } publicclassSequence{ private Object[] objects; privateint next = 0; publicSequence(int size){ objects = new Object[size]; } publicvoidadd(Object x){ if(next < objects.length) objects[next++] = x; } privateclassSSelectorimplementsSelector{ privateint i = 0; publicbooleanend(){ return i == objects.length; } public Object current(){ return objects[i]; } publicvoidnext(){ if(i < objects.length) i++; } } privateclassReverseSeletorimplementsSelector{ privateint i = objects.length-1; @Override publicbooleanend(){ return i == -1; }
@Override public Object current(){ return objects[i]; }
@Override publicvoidnext(){ if (i > -1){ i--; } } }
public Selector getSelector(){ returnnew SSelector(); }
public Selector getReverseSeletor(){ returnnew ReverseSeletor(); } publicstaticvoidmain(String[] args){ int size = 0; Sequence sequence = new Sequence(size); Random r = new Random(); for(int i = 0; i < size; i++) sequence.add(Integer.toString(r.nextInt(47)));
classInheritInnerextendsWithInner.Inner{ InheritInner(WithInner wi){ wi.super(); //必须调用外围类的构造器 } publicstaticvoidmain(String[] args){ WithInner wi = new WithInner(); InheritInner ii = new InheritInner(wi); } }
publicstaticvoidmain(String[] args){ LocalInnerClass lic = new LocalInnerClass(); Counter c1 = lic.getCounter("local inner class"), c2 = lic.getCounter2("anonymous inner class"); for ( int i = 0; i < 5; i++){ System.out.println(" " + c1.next()); } for ( int i = 0; i < 5; i++){ System.out.println(" " + c2.next()); } } } /* output: LocalCounter() Counter() local inner class 0 local inner class 1 local inner class 2 local inner class 3 local inner class 4 anonymous inner class 5 anonymous inner class 6 anonymous inner class 7 anonymous inner class 8 anonymous inner class 9 */