2016-09-08 4 views
3

私はJavaでメソッドのシグネチャを与える方法を理解するのに問題があると思います。たとえば、私のコードが:Javaでメソッドのシグネチャを識別する方法は?

public void addOn(Fraction other) { 
     number = other.denominator * number + other.numerator * denominator; 
     denominator = denominator * other.denominator; 

であり、私はメソッドaddOn()の署名を与えなければならなかった。

このメソッドのシグネチャは、単純にaddOn(Fraction)ですか?

+1

@azurefrog戻り値の型は署名の一部ではありません。 – khelwood

+1

メソッドのシグネチャの仕様については、[here](https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html)を参照してください。 – khelwood

+0

@khelwoodありがとうございました。これは、署名がどのように機能するかをもっと理解するのに役立ちました! –

答えて

2

としては、メソッドのシグネチャは、メソッドの名前と引数だけ何もないのデータ型が含まれています。上記のあなたが掲示する方法で例えばのために

public void addOn(Fraction other) { 

} 

署名は、アドオン(画分)となります。

これは、C++シグネチャのC++とJavaの違いの1つですが、戻り値の型も含みますが、Javaの戻り値の型はメソッドの署名の一部ではありません。 したがって、C++メソッドの場合、上記のメソッドの署名は無効になります。addOn(Fraction);

+0

メソッドがメソッド(int a、String b)である場合、このメソッドのシグネチャは、順序を変更した後のように、すでに順序を処理しているメソッド(int、String)になります。 String、int)引数の型も変わります/ –

+1

上記のコードは数値が初期化されていないので問題になります –

3

これは本当に必要とする「精度」のレベルに依存します。

あなたは非公式あなたに同僚、そしておそらく人間は面白いかもしれないすべての情報が含まれます「署名」の話:

  1. 戻り値の型
  2. メソッド名
  3. パラメータタイプ(含むをその順序!)
  4. スローリスト
  5. (注釈)

コンパイラーコンストラクターか、JVM compilerの視点の場合は、答えが異なります。その場合、アイテム2とアイテム3だけが問題になります。他のものはであり、の部分ではないの部分です。

1

パラメータとしてFractionをクラスに渡したい場合。 //と仮定すると、分数クラスのデフォルトコンストラクタ

を持って次に、あなたのようにそれを渡すことができます。まず、フラクションREF =新しい画分は()Fraction

のようなの参照を作成する必要があります。

アドオン(REF)、フラクションクラスの//文献Javaではパラメータ

0

私はあなたがthis articleを参照する必要がありますと信じています。

これは明らかに、メソッドのシグネチャのみが含まれていることを述べている:型を返す

  1. メソッド名
  2. パラメータ型、すなわち、タイプやパラメータ

のための例外のような他のすべての部品を、注釈は、署名ではなくメソッド宣言の一部です。

これらの構文上のことに加えて、メソッド名を選択する際にもセマンティクスを考慮する必要があります。

  • メソッド名は、私がjava coding guidelinesを通過することをお勧めいたしますでしょう動詞

で始めるべき

  • メソッド名が意味のある
  • メソッド名でなければなりませんキャメルケースに従ってください。

  • 関連する問題