zoukankan      html  css  js  c++  java
  • 匿名内部类了解一二

    1.    匿名内部类首先是一个类的内部定义的,是用来帮助这个外部类去更好的实现一些功能,主要用在想方法传递一个对象做为参数。

    public void fun(new Persion{System.out.printIn("Hi")});
    

     向方法传了一个person的对象。Person是外部类,匿名类只是一个类体,这个类体创建的对象上转型为Person的对象了。

    2.    转载自https://blog.csdn.net/u011983779/article/details/53293412

    Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
    
                    }
                };
    
     new View.OnClickListener(){
                @Override
                public void onClick(View v) {
    
                }
            };
    

     上面是我们平时经常用的方法,它们就是典型的匿名内部类,但是我没从这里看出来它们什么类没有名字,不过知道new 一个接口肯定是不合理的,下面就将匿名还原:

    abstract class Person {
        public abstract void eat();
    }
    
    class Child extends Person {
        public void eat() {
            System.out.println("eat something");
        }
    }
    
    public class Demo {
        public static void main(String[] args) {
            Person p = new Child();
            p.eat();
        }
    }
    

     可以看到,我们用Child继承了Person类,然后实现了Child的实例,将其向上转型为Person抽象类的引用,而Child类就是我们在匿名内部类中隐藏的类,写成匿名类:

    abstract class Person {
        public abstract void eat();
    }
    
    public class Demo {
        public static void main(String[] args) {
            Person p = new Person() {
                public void eat() {
                    System.out.println("eat something");
                }
            };
            p.eat();
        }
    }
    

     是不是一下子就清晰了,反正我是这样的,至于匿名内部类特点啥的就不说了

  • 相关阅读:
    [BZOJ2729]排队
    [BZOJ2839]集合计数
    [BZOJ2111] Perm 排列计数
    Unet 项目部分代码学习
    数据增强代码
    论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)
    CTPN项目部分代码学习
    论文阅读笔记四:CTPN: Detecting Text in Natural Image with Connectionist Text Proposal Network(ECCV2016)
    R2CNN项目部分代码学习
    VOC数据集生成代码使用说明
  • 原文地址:https://www.cnblogs.com/baxianhua/p/9773520.html
Copyright © 2011-2022 走看看