java - 构建一个匿名内部类并调用它的方法

标签 java anonymous-inner-class

我搜索了这个但不幸的是没有找到匹配项,我在这样的方法中有这个本地匿名内部类:-

new Object(){
    public void open(){
        // do some stuff
    }
    public void dis(){
        // do some stuff
    }
};

里面有 2 种方法 (open,dis) 我知道如果我想使用其中的任何一种方法就可以了

new Object(){
    public void open(){
        // do some stuff
    }
    public void dis(){
        // do some stuff
    }
}.open()

现在我的问题是如果我想同时调用这两个方法怎么办

最佳答案

你可以像这样创建一个界面:

interface MyAnonymous {
   MyAnonymous open();
   MyAnonymous dis();  //or even void here
}

new MyAnonymous(){
    public MyAnonymous open(){
        // do some stuff
        return this;
    }
    public MyAnonymous dis(){
        // do some stuff
        return this;
    }
}.open().dis();

编辑----

正如@Jeff 指出的那样,只有在分配引用时才需要接口(interface)。 事实上,以下解决方案(由@JamesB 提出)是完全有效的:

new MyObject(){
        public MyObject open(){
            // do some stuff
            return this;
        }
        public MyObject dis(){
            // do some stuff
            return this;
        }
    }.open().dis();

但这不会编译:

MyObject myObject = new MyObject(){
            public MyObject open(){
                // do some stuff
                return this;
            }
            public MyObject dis(){
                // do some stuff
                return this;
            }
        };
myObject.open().dis();  //not compiling since anonymous class creates a subclass of the class

关于java - 构建一个匿名内部类并调用它的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184606/

相关文章:

java - System.getProperty ("user.dir")替代方案

java - 如何使用MVC和三层架构分层传输数据?

java - 在 Linkedin Android 上分享

java - 从匿名类参数访问类的实例

java - 激活失败 - 适用于 Netbeans 的诺基亚 SDK

java - JDK Hashmap 源代码 - 匿名内部类和抽象实例化?

java - 匿名内部类中的 NullPointerException

java - 我需要帮助理解这段java代码

java - 具有动态参数数量的通用类