在Udacity的初学者开发Android应用程序的课程中,他们在他们的初学者课程中介绍了一个简短的链接方法示例。
这是代码的片段:
public void submitOrder(View view) {
/**
* Chaining method example given by Udacity.
* stringName variable successfully receives the string value.
*/
EditText inputName = (EditText) findViewById(R.id.name_input);
String stringName = inputName.getText().toString();
/**
* My own example.
* Cannot resolve method 'toString()' error message occurs.
*/
CheckBox checkBox = (CheckBox) findViewById(R.id.check_box);
String hasWhippedCream = checkBox.isChecked().toString();
// What I found by searching on google to make 'toString' work on Boolean
String has = Boolean.toString(checkBox.isChecked());
}
Udacity的讲师说的是,为了使链接方法起作用,第一个返回值必须在其类中包含以下方法。
至于上面的例子,她解释说inputName.getText()
返回Editable
对象&它的类中有toString()
方法,因此该链接方法有效,并在toString()
调用时返回字符串并保存在stringName中。
当我尝试在Boolean
返回时实现相同格式的链接方法时,我的困惑就出现了。在我上面的示例中,我调用checkBox.isChecked()
,其返回类型为boolean
。现在,Boolean
根据android文档确实有toString()
方法,所以它应该可以工作,但它不会弹出错误信息。
但是,我在谷歌上找到的格式确实有效:
String has = Boolean.toString(checkBox.isChecked())
问题:
Boolean
具有与inputName.getText()
不同的链接方式格式,如上所示?答案 0 :(得分:2)
Boolean
和boolean
是Java中的不同类型(请注意B)。
Boolean
是一个包装类,它提供了将原始数据类型(在本例中为boolean
)转换为对象和对象为原语的机制。
这有效:Boolean.toString(checkBox.isChecked());
因为它使用布尔包装类'静态方法toString
将 isChecked()
方法返回的原语布尔值从checkBox
转换为{{1}对象。
有关包装类的更多信息:
简单地说,Boolean
返回一个原始isChecked()
,它没有任何方法,所以你不能在那里进行方法链接。