zoukankan      html  css  js  c++  java
  • java 内部类使用 .this 和 .new

    如果需要生成对外部类对象的引用,可以使用外部类的名字后面紧跟圆点和this,这样产生的引用自动地具有正确的类型,这一点在编译器就被知晓并受到检查,因此并没有运行时开销

    //: innerclasses/DotThis.java
    // Qualifying access to the outer-class object.
    package object;
    public class DotThis {
      void f() { System.out.println("DotThis.f()"); }
      public class Inner {
        public DotThis outer() {
          return DotThis.this; //这里生成了类DotThis的引用(inference)
          // A plain "this" would be Inner's "this"
        }
      }
      public Inner inner() { return new Inner(); }
      public static void main(String[] args) {
        DotThis dt = new DotThis();
        DotThis.Inner dti = dt.inner();
        dti.outer().f();//这里用类DotThis的引用(inference) 创建类DotThis的对象
      }
    } /* Output:
    DotThis.f()
    *///:~

    要去创建某个内部类的对象,必须字new表达式中提供其他外部类对象的引用,这就需要.new语法,必须使用外部类的对象来创建内部类

    //: innerclasses/DotNew.java
    // Creating an inner class directly using the .new syntax.
    package object;
    public class DotNew {
      public class Inner {}
      public static void main(String[] args) {
        DotNew dn = new DotNew(); 
        DotNew.Inner dni = dn.new Inner(); //这里利用DotNEW的对象生成内部类Inner的对象
        //! DotNew.Inner dni = DotNew.new Inner(); //这样不允许(allow)
      }
    } ///:~
  • 相关阅读:
    Android开发切换host应用
    HTTP缓存相关头
    我理解的Android加载器
    Mysql的NULL的一个注意点
    Android的Activity生命周期
    说说jsonp
    PHP的pcntl多进程
    谈谈不换行空格
    关于Java代码优化的44条建议!
    java8 遍历数组的几种方式
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/10219490.html
Copyright © 2011-2022 走看看