如果声明的成员类不要求访问外围实例, 那么应该使他成为一个静态成员类. 如果省略了static修饰符,则每个实例都将包含一个额外的指向外围对象的引用. 维护这份引用要消耗时间和空间, 又没有相应的好处. 如果在没有外围实例的情况下,也要分配实例的话,则不能使用非静态成员类,因为非静态成员类的实例必须要有一个外围实例.
例如Map实例,内部有一个Entry对象对应于Map中的每一对键-值.虽然每一个Entry都与一个Map关联,但是Entry上的方法(getKey,getValue和setValue)并不需要访问该Map. 因此使用非静态成员来表示Entry是很浪费的,私有的静态成员类是最佳选择.
例如Map实例,内部有一个Entry对象对应于Map中的每一对键-值.虽然每一个Entry都与一个Map关联,但是Entry上的方法(getKey,getValue和setValue)并不需要访问该Map. 因此使用非静态成员来表示Entry是很浪费的,私有的静态成员类是最佳选择.