日期:2014-05-20  浏览次数:20706 次

静态内部类 构造器?
初学java,看到 java 自带 demo 里面的filechooserDemo
里面有个下面类


Java code


public class FileChooserDemo extends JPanel implements ActionListener {
..... //省略
 private static SupportedLaF nimbusLaF;


    private static class SupportedLaF 
    {

        private final String name;
        private final LookAndFeel laf;

        SupportedLaF(String name, LookAndFeel laf) {
            this.name = name;
            this.laf = laf;
        }

        @Override
        public String toString() {
            return name;
        }
    }
....//省略
}




Java code

SupportedLaF supportedLaF = new SupportedLaF(name, laf);



书上找了,网上找了,静态内部类用 new 初始化 这是个什么意思。。
求解。。

------解决方案--------------------
Java code
静态都是用来修饰类的内部成员的。比如静态方法,静态成员变量,静态常量。它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。 
这样静态内部类就可以理解了,因为这个类没有必要单独存放一个文件,它一般来说只被所在外部类使用。并且它可以直接被用 外部类名+内部类名 获得。 

以下举例说明怎么使用: 
Student类有个叫School的内部类(非静态) 
Student stu = new Student(); 
stu.School sch = new stu.School(); 
sch就是School的一个对象。 

假如School是内部静态类: 
Student.School sch = new Student.School();

------解决方案--------------------
引用
它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,以致可以用类名+静态成员名直接获得。
其实还有副作用