码迷,mamicode.com
首页 > 其他好文 > 详细

匿名类和匿名对象

时间:2018-12-01 00:17:03      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:简单的   on()   ace   rgs   Fix   prism   header   log   override   

https://blog.csdn.net/qq_39728125/article/details/77119736

 

 

匿名类和匿名对象

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39728125/article/details/77119736

匿名类和匿名对象


在Java中有匿名类和匿名对象的概念,有名字可知他们是因为没有名字二指定为匿名类的。

匿名类

匿名类(也叫匿名内部类)他是内部类的一种。匿名类在类中只能使用一次,它通常用来简化代码的编写,但使用匿名类还有一个前提条件:它必须继承一个父类或者一个接口,因此这个匿名类会被默认为这个父类或者接口的子类或实现类。如:

//这是一个简单的接口
public interface IPresenter {
    void run();
}

//这是另外一个类
public class Presenter {
    //使用了接口的对象作为方法的参数,然后返回接口的对象
    public IPresenter getiPresenter(IPresenter iPresenter) {
        return iPresenter;
    }
}

//Convey类来操作上面的类和接口
public class Convey {
    //定义Presenter对象
    private Presenter presenter = new Presenter();


    public void setiPresenter() {
        //一个接口的局部变量
        IPresenter iPresenter = presenter.getiPresenter(new IPresenter() {
        //在这里定义一个接口的实现匿名类

            @Override
            public void run() {
                // 实现接口的方法
            }
        });
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

在Java中这种匿名类很常见,例如:

new Button().setOnClickListener(new OnClickListener() { 

    //定义了一个实现事件监听的匿名类
    @Override 
    public void onClick(View v) { //实现OnClickListener中的方法

        new Thread() { 
            //定义了一个实现Thread的匿名类
            @Override 
            public void run() {  } 
        }.start(); 
    } 
}); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

匿名对象

匿名对象也是Java中比较常见的实例化对象方式,匿名对象的使用情况:

  • 当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。
  • 可以将匿名对象作为实际参数进行传递。

    public class Convey {
    
        private Presenter presenter;
    
        public void setiPresenter() {
            IPresenter iPresenter = presenter.getiPresenter(new IPresenter() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                }
            });
        }
    }
    
    public class Test {
    
        public static void main(String[] args) {
            //用匿名对象直接该类的方法
            new Convey().setiPresenter();
        }
    
  •  

匿名类和匿名对象

标签:简单的   on()   ace   rgs   Fix   prism   header   log   override   

原文地址:https://www.cnblogs.com/guyuehuanhuan/p/10046852.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!