• EffectiveJava(22)JAVA四种嵌套类的特点及用法


    嵌套类:
    1.静态成员类
    静态成员类是外围类的一个静态成员,遵守同样的可访问性规则
    用法:a.作为公有的辅助类
    内部类:
    2.非静态成员类
    语法上只和静态成员类的唯一区别是少一个static修饰符
    a.它的每个实例都隐含着与外围类的一个实例相关联
    b.在其实例方法内部可以调用外围实例上的方法,或者利用this构造获得外围实例的引用
    用法:a.定义一个Adapter

        public class MySet<E> extends AbstractSet<E>{
                public Iterator<E> iterator(){
                    return new MyIterator(); 
                }
                private class MyIterator implements Itertor<E>{
                    ...
                }
            }

    –如果嵌套类嵌套类的实力可以在它外围类的实例之外独立存在,这个嵌套类必须是静态成员类
    –如果声明成员类不要求访问外围实例,就始终要把static放在他的声明中.
    3.匿名类
    当且仅当匿名类粗现在非静态环境中时,它才有外围实例
    缺点:不能执行instanceof测试和任何命名类的其他事情
    无法实现多个接口或扩展一个类;除了从他的超类型中继承得到之外,其客户端无法调用任何成员;由于匿名类出现在表达式中,他必须保持简短来保证程序的可读性(<10)
    用法:a.动态创建函数对象Arrays.sort();

                Arrays.sort(StringArray,new Comparator<String>(){
    //              public int compare(String s1,String s2){
    //              return s1.length()-s2.length();
    //              }
    //          })
            b.创建过程对象(Runnable,Thread,TimerTask实例)
            c.声明在静态工厂方法的内部  
    4.局部类:拥有其他嵌套类的特点
        在任何可以声明局部变量的地方都可以声明局部类,并遵守同样的作用域规则
    

    总结:如果一个嵌套类需要在单个方法之外仍然可见,或者他太长了不适合放在方法内部,就使用成员类.如果成员类的每个实例都需要一个指向其外围实例的引用,就用静态成员类;否则,就做成静态的.如果这个嵌套类属于一个方法的内部,你只需要在一个地方创建实例,并且已经有了一个预置的类型可以说明这个类的特征,就要把它做成匿名类;否则,就做成局部类

  • 相关阅读:
    Django
    C++开源库集合
    单细胞参考文献 single cell
    第三章 RNA测序
    第二章 基因芯片
    前言 转录组
    生物信息学——RNA的剪切过程
    生信研究内容
    测序总结,高通量测序名词
    单端测序,双端测序,基因组计划图谱
  • 原文地址:https://www.cnblogs.com/qwop/p/6637291.html
Copyright © 2020-2023  润新知