我可以以更优雅的方式对一个组件执行多个操作吗?

时间:2016-05-14 10:36:55

标签: java

我注意到我的Android项目中生成的代码使用以下技术将多个操作应用于Snackbar:

    fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Send message", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
     });

这似乎不适用于常规的java-swing项目:

    for(int i = 0; i < 6; i++)
       ((JButton) toolBar.getComponent(i)).setText(null)
                                          .setIcon(new ImageIcon(iconPath[i]));

生成以下编译错误:

    error: void cannot be dereferenced
      .setIcon(new ImageIcon(iconPath[i]));}
      ^

我的解决方案是简单地执行以下操作:

    for(int i = 0; i < 6; i++){
        ((JButton) toolBar.getComponent(i)).setText(null);
        ((JButton) toolBar.getComponent(i)).setIcon(new ImageIcon(iconPath[i]));
    }

我的问题是:我是否遗漏了某些内容,或者只是在Android项目中有效,在这种情况下,为什么?

1 个答案:

答案 0 :(得分:0)

这与Android无关。这是关于方法的返回类型。您的示例中Snackbar使用的技术称为Method Chaining

因此,这是由实施您正在使用的类的其他人做出的设计决策。这不是语言特征或类似的东西。