zoukankan      html  css  js  c++  java
  • Thinking in java中内部类的例子。

    描述简单清晰!

    -------

    下面这个例子看起来有些奇怪:

    //: Parcel6.java
    // A method that returns an anonymous inner class
    package c07.innerscopes;
    
    public class Parcel6 {
      public Contents cont() {
        return new Contents() {
          private int i = 11;
          public int value() { return i; }
        }; // Semicolon required in this case
      }
      public static void main(String[] args) {
        Parcel6 p = new Parcel6();
        Contents c = p.cont();
      }
    } ///:~


    cont()方法同时合并了返回值的创建代码,以及用于表示那个返回值的类。除此以外,这个类是匿名的——它没有名字。而且看起来似乎更让人摸不着头脑的是,我们准备创建一个Contents对象:
    return new Contents()
    但在这之后,在遇到分号之前,我们又说:“等一等,让我先在一个类定义里再耍一下花招”:

    return new Contents() {
      private int i = 11;
      public int value() { return i; }
    };

    这种奇怪的语法要表达的意思是:“创建从Contents衍生出来的匿名类的一个对象”。由new表达式返回的句柄会自动上溯造型成一个Contents句柄。匿名内部类的语法其实要表达的是:

    class MyContents extends Contents {
        private int i = 11;
        public int value() { return i; }
    }
    return new MyContents();
    




  • 相关阅读:
    springboot整合Swagger2
    FastJson会把哪些字符串解析为null
    BitMap再再体验之布隆过滤器
    如何利用windows自带的画图工具拼接图片
    BitMap再体验之排序
    BitMap 初体验
    Chrome 隐藏最常访问的网站
    idea同一个项目不同端口启动
    ubuntu16搭建harbor镜像库
    virtualbox硬盘扩容
  • 原文地址:https://www.cnblogs.com/xzs603/p/2787646.html
Copyright © 2011-2022 走看看