java内部类的困惑

今天在看api源码是,总是看到一些
private static class XXX{
xxxxxx
}
的内部类,在网上没找到这方面的解释,不知道为什么要弄成private static

比如有这么一个例子

interface IFoo {
public void bar();
}

class Outer {
private static class Foo implements IFoo{
public void bar() {
System.out.println("Bar");
}
}

public static IFoo getFoo() {
return new Outer();
}
}

在这里Outer方法内部有一个IFoo类型的类Foo
但又不希望这个Foo类被外界使用,Foo类型的对象只能由Outer获得

这样的话就使用了内部类
而因为getFoo是static的
这就要求Foo也是static的了

这只是一个实现方式 希望对你有用~

既然是内部类 自然不想给外部调用 所以用private