1

Java Inheritance (Hoffman による Core 2 java bk から) に関するこのコードを研究しています。クラス MethodPointerTest.java のコードは次のとおりです。

Method square = MethodPointerTest.class.getMethod("square", double.class);

クラスの後半には、次のような関数があります。

public static double square(double x){ 
return x * x;
}

getMethod 関数の 2 番目の引数はなぜですか。

double.class

対「ダブル」と言うだけ

ありがとうございました

4

2 に答える 2

4

メソッドは、メソッドのパラメーターのgetMethod()を表すパラメーターとしてクラスを受け取ります。

キーワードdoubleは、変数/パラメーターを宣言またはキャストするためにのみ使用されます。

リフレクションでは、コードではなくメタコードを扱っています。

于 2013-06-15T21:32:04.480 に答える
2

Double.class を追加する必要があるのは、Java でメソッドをオーバーロードできるためです。つまり、名前は同じでもパラメータが異なるメソッドを多数持つことができます。このため、Java では、リフレクションを使用してメソッドを取得するときに、メソッドの名前とそのパラメーターの型の両方を指定できます。

double だけでなく Double.class が必要な理由は、double は型ではなく double だからです。Double.class は型です。

于 2013-06-15T21:39:35.060 に答える