A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 符立波 高级黑马   /  2012-10-29 06:32  /  1681 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 符立波 于 2012-11-19 21:19 编辑

说一下匿名对象的定义,特点和使用场合,老是弄不太清楚啊!!!

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

4 个回复

倒序浏览
匿名对象是对象的简化形式。
特点:简化书写
适用场合:1、当对象只被调用一次时,使用匿名对象更为简化。
          2、可以作为实际参数进行传递。
注意事项:当对一个对象进行多次调用时,就不可以使用匿名对象了,必须给对象起个名字。

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1

查看全部评分

回复 使用道具 举报
匿名内部类:其实就是内部类的简写格式。相当于一个匿名子类对象
    前提: 必须继承一个类(抽象类也可)或者实现接口
    格式:  new Object(){
              int x=0;
              void x(){}}.x();
注:这样可以直接用x方法或者获取x变量,但是对象一被引用,引用的变量后不能直接用了,因为多态性。
对于方法中的内部类或块中内部类只能访问块中或方法中的final变量。
回复 使用道具 举报
看看我的示例代码:
可能会知道什么是内部类。
class Animal {
    short mShort = 200;
    Animal an;
   
    public Animal go() {
        an = null;
        return an;
    }
   
    class Fish {
        
        public Fish() {
            an.go();
        }
    }
}

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("main() start --->");
        
        hello();
        
        System.out.println("main() end <---");
    }

    public static void hello() {
        Animal an1 = new Animal();
        Animal an2 = new Animal();
        Animal an3 = an1.go();
        
        an1 = null;
        
        // hello
    }
   
}

回复 使用道具 举报
我们可以不定义变量引用对象,使用new关键字创建对象后直接使用,这样的对象没有名字,所以叫匿名对象。
通常我们需要使用一个对象且只使用一次的时候,就可以使用匿名对象。比如将对象作为一个参数传递给另外一个函数。
匿名对象因为没有任何引用到达,在使用一次之后即成为垃圾。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马