interface Hidden { public int value(); } class Outer { private class HiddenInner implements Hidden { private int i; public HiddenInner (int i) { this.i = i; } public int value () { return i; } } public Hidden getInnerInstance () { HiddenInner in = new HiddenInner(11); return in; } } public class Test { public static void main(String[] args) { Outer out = new Outer(); Outer.HiddenInner in1 = out.getInnerInstance(); // va genera eroare, tipul Outer.HiddenInner nu este vizibil Outer.HiddenInner in2 = new Outer().new HiddenInner(10); // din nou eroare Hidden in3 = out.getInnerInstance(); // acces corect la o instanta HiddenInner System.out.println(in3.value()); } }