public class NonStaticOuterClass { static int outer; StaticInnerClass innerObj; StaticInnerClass innerObj1; public NonStaticOuterClass(int o) { outer = o; java.util.Random r = new java.util.Random(); innerObj = new StaticInnerClass(); innerObj.innerPriv = r.nextInt(10000); innerObj.innerPub = r.nextInt(10000); innerObj1 = new StaticInnerClass(); innerObj1.innerPriv = r.nextInt(10000); innerObj1.innerPub = r.nextInt(10000); } public String toString() { return "outer: "+outer+" | "+innerObj.toString() +" - "+ innerObj1.toString(); } public static class StaticInnerClass { private int innerPriv; protected int innerProt; public int innerPub; private void setInnerPriv(int priv) { innerPriv = priv; } public void setInnerPub(int pub) { innerPub = pub; } public String toString() { return "innerPriv: "+innerPriv+", innerPub: "+innerPub; } } }