如何在一行中编写这个匿名方法?

时间:2013-01-13 19:17:20

标签: java android shortcut anonymous

当我进行方法重载时,我总是碰到这些。如何在一行中编写第二种方法? View.setText(text)会返回void,但我想在TextView执行setText()后返回private ViewGroup getExpanableListChild() { return (LinearLayout) LayoutInflater.from(this).inflate( R.layout.list_checkbox, null); } private ViewGroup getExpanableListChild(String text) { return ViewUtil.getTextViewFromParent(getExpanableListChild()).setText( text);//compile error, can't return void. }
注意:我知道我可以“用两种方式写出来”。问题是询问如何制作它。

{{1}}

2 个答案:

答案 0 :(得分:1)

您可以在这些情况下使用Builder,但我不明白这一点。

例如:

return ViewUtil.getTextViewFromParent(getExpanableListChild()) //returns some kind of builder
       .setText(text) // returns builder
       .setColor(someColor) // another example, again returns builder
       .build(); // returns ViewGroup

这与SDK中存在的策略相同,您可以使用AlertDialog.Builder构建AlertDialog

答案 1 :(得分:0)

正如其他人所解释的那样,如果不改变ViewGroup.setText()的实现,只是将'{1'}设置为您传递的任何内容,就无法执行此操作。

这样做将是一种更具功能性的编程风格。 Java在设计上不是一种自然功能语言,而void方法基本上与功能风格相反 - 即它们具有副作用(在这种情况下在ViewGroup对象上设置'text')。

调用void方法时,必须进行调用,然后对后续行中生成的修改对象(在本例中返回)执行某些操作。这就是命令式编程风格。