2016-10-13 14 views
0

アンドロイドアプリを開発するためのUdacityの初心者コースでは、初心者のレッスンの1つに、連鎖方法の簡単な例を紹介します。連鎖方式が機能するためには、最初の戻り値は、そのクラスで以下のメソッドを含んでいなければならないことは何Udacityのインストラクターが言うチェーンメソッドがJavaで動作しようとしないのはなぜですか?

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()); 

} 

は、ここでのコードの抜粋です。上記の例については

、彼女はinputName.getText()リターンがEditableオブジェクト&それはそのクラス内toString()メソッドを持っていることを説明し、このように、この連鎖方法が有効であり、それにtoString()呼び出し時に文字列を返し、stringNameに保存されます。

Boolean返信で同じフォーマットのチェーンメソッドを実装しようとすると、混乱が生じます。上記の私自身の例では、戻り値の型がbooleancheckBox.isChecked()と呼びます。さて、Booleanは、アンドロイドのドキュメントに従ってtoString()メソッドを持っているので、うまくいくはずですが、エラーメッセージが表示されずに表示されません。

しかし、私はGoogleで見つけたフォーマットはありません作品:

String has = Boolean.toString(checkBox.isChecked()) 

質問:

  • なぜブール戻り値の型の私の連鎖方法が動作しませんされていること?
  • 上記のように連鎖方法を作成する際に従う形式の規則はありますか? Booleanは上記のようにinputName.getText()とは異なるチェーニング方法を使用しているのはなぜですか?
+7

'ブール'は 'オブジェクト'です。一方、 'boolean'はプリミティブであり、メソッドはありません。 – SomeJavaGuy

+0

@KevinEscheあなたはコメントとしてではなく答えとしてそれを提出するかもしれません。 – nbrooks

+0

@Kevin Esche私は正しい質問に向かう。私は本当に初心者ですが、検索の権利さえできません:(。ありがとう!:) – lostsoul

答えて

2

Booleanbooleanは、Javaでは異なるタイプです(Bに注意してください)。 Booleanはラッパークラスであり、プリミティブデータ型(この場合はboolean)をオブジェクトとオブジェクトにプリミティブに変換するメカニズムを提供します。

これは動作します:Boolean.toString(checkBox.isChecked()); それはBooleanオブジェクトへcheckBoxからisChecked()メソッドによって返さプリミティブboolean型を変換するために、ブールラッパークラスの静的メソッドtoStringを使用しているため。ラッパークラスについて

さらに詳しい情報:

  1. https://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html
  2. http://www.javatpoint.com/wrapper-class-in-java

は、単純に、任意の方法を持っていないので、あなたは、メソッドチェーンを行うことはできませんisChecked()戻りプリミティブbooleanを、言っそこ。

関連する問題