有人请用Java代码语法解释收缩

时间:2018-06-29 20:15:32

标签: java

来自虚拟的问题。...下面的代码的完整版本是什么? 如何用经典(长)版本的代码解释它?

FirebaseDatabase.getInstance()
                .getReference()
                .push()
                .setValue(new ChatMessage(input.getText().toString(),
                        FirebaseAuth.getInstance()
                                .getCurrentUser()
                                .getDisplayName())
                );

2 个答案:

答案 0 :(得分:3)

被调用的方法都返回一个对象(最后一个对象除外),而不是void。在某些其他语言中,您将它们称为功能,而不是过程

由于该方法返回了一个对象,因此您可以依次在该返回的对象上调用一个方法,并像这样将调用链接起来。

等效于这样的事情,如果这使您更清楚:

<some class> var1 = FirebaseDatabase.getInstance();
<some class> var2 = var1.getReference();
<some class> var3 = var2.push();
var3.setValue(new ChatMessage(input.getText().toString(),
                    FirebaseAuth.getInstance()
                            .getCurrentUser()
                            .getDisplayName())
);

答案 1 :(得分:1)

那只是Java

SomeClass1 instance        = FirebaseDatabase.getInstance();
SomeClass2 reference       = instance.getReference();
SomeClass3 push            = reference.push();
SomeClass4 authInstance    = FirebaseAuth.getInstance();
SomeClass5 currentUser     = authInstance.getCurrentUser();
SomeClass6 displayName     = currentUser.getDisplayName();
SomeClass6 message         = input.getText();
SomeClass7 messageAsString = message.toString();
SomeClass8 chatMessage     = new ChatMessage(messageAsString, displayName);

push.setValue(chatMessage);

注:为清楚起见,代码采用了荒谬的格式。请不要在代码中使用类似此示例的格式。