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();
        }
    }
    

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

  • 相关阅读:
    Java基础之内部类介绍
    Java基础之泛型的使用
    Zookeeper的ZAB协议
    ssm框架整合快速入门
    maven创建web项目
    Shiro快速入门
    工作流Activiti新手入门学习路线整理
    Bootstrap-table实现动态合并相同行(表格同名合并)
    Bootstrap-datetimepicker日期插件简单使用
    java web定时任务---quartz
  • 原文地址:https://www.cnblogs.com/baxianhua/p/9773520.html
Copyright © 2011-2022 走看看