为什么我的链式方法在Java工作中没有尝试?

时间:2016-10-13 07:38:24

标签: java android

在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()不同的链接方式格式,如上所示?

1 个答案:

答案 0 :(得分:2)

Booleanboolean是Java中的不同类型(请注意B)。 Boolean是一个包装类,它提供了将原始数据类型(在本例中为boolean)转换为对象和对象为原语的机制。

这有效:Boolean.toString(checkBox.isChecked()); 因为它使用布尔包装类'静态方法toStringisChecked()方法返回的原语布尔值从checkBox 转换为{{1}对象

有关包装类的更多信息:

  1. https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html
  2. http://www.javatpoint.com/wrapper-class-in-java
  3. 简单地说,Boolean返回一个原始isChecked(),它没有任何方法,所以你不能在那里进行方法链接。