Java中的匿名对象

Java中的匿名对象,java,Java,Java帮助我们使用 new class_name(); 语句并使用关联(.)运算符调用方法,如 new Emp().input(); 如何使用它从一个匿名对象同时调用两个方法,比如同时调用input()和show() public void inputThenShow() { input(); show(); } 然后打电话给我 new Emp().inputThenShow(); new Emp().show().input(); 或 然后打电话给我 new Emp

Java帮助我们使用

new class_name();
语句并使用关联(.)运算符调用方法,如

new Emp().input();

如何使用它从一个匿名对象同时调用两个方法,比如同时调用
input()
show()

public void inputThenShow() {
    input();
    show();
}
然后打电话给我

new Emp().inputThenShow();
new Emp().show().input();

然后打电话给我

new Emp().inputThenShow();
new Emp().show().input();

在不修改
Emp
类的情况下,您还可以创建一个匿名类来扩展您的类,以允许它调用这两个方法

new Emp() {
    public void doStuff() {
        input();
        show();
    }
}.doStuff();

作为奖励,它将为您提供匿名类的匿名实例。

您不能。因为对象没有被引用,所以一旦方法返回,它基本上就丢失了。一些API使用fluent接口模式,但它仍然非常少见;e、 输入();e、 show()。顺便说一句,为什么这不是一个可接受的解决方案?@njzk2不是真正的
anonymous
,如果您将其分配给一个名称;)@阿鲁伊斯丹特:没错。我的评论应该改为:
为什么需要匿名对象?
作为一条一般性建议,我要提醒大家不要试图让代码过于简洁。流畅的模式很好,但另一方面,将其写成三行也是如此。有很多行同时做了无数的事情,我看了想,“如果我们把它们分开,会更可读”——但我很少看到3或4行,然后想,“如果我们把它们弄成一行,会更可读。”这就是@njzk2don提到的流畅的接口模式。别忘了用返回类型替换void:-)
voids
应该是
Emp
:)感谢paul和Roddy提供的fixMethod
ShowAndInput()
应该是
ShowAndInput()
camel,首字母小写,以遵循Java编码风格+惯例。另外,就我个人而言,我希望调用
inputHenshow()
或类似的方法来指示所执行操作的顺序。这应该是一个例外,而不是规范。通常,在方法名称中使用
这个词是非常糟糕的。为什么不好?在方法名中没有
。@Zach原始版本有。但我认为skiwi所引用的是一种方法的思想,这种方法在OO中是一种常见的、通常被认为是“好的”实践。与其说是“和”这个词本身,不如说是它所暗示的违反原则(至少我认为这是skiwi的意思)。除非它(这里:
Emp
)是最后一个类