2012-02-24 4 views
3

は誰でも、我々が使用する必要があるとき、私に知らせてもらえ:Object getClass()の使用方法は何ですか?getMethod?

Object.getClass().getMethod (action, null); 

私は、これはJavaのリフレクションパッケージに属していることが分かりました。私はこの質問をしています。私たちの既存のアプリケーションでは、このコードがありますが、その使用方法がわかりません。

この場合、これは何ですか。

なぜreturn文がこのようになりますか?何が返されますか?

+5

'getMethod'はメソッド名がメソッドオブジェクトではなく' String'であると想定しているので、これが既存のアプリケーションのコードであるとは思わないでしょう。 – stryba

+0

はい、これは私のアプリケーション内のコードです。 – Kiran

+0

こんにちは、返信いただきありがとうございますが、戻り値の型がこのような方法である理由を誰にでも教えてください。 (invokeはjava.lang.reflect.Methodクラスの一部であり、TAPResponseとは何ですか? – Kiran

答えて

-1

コードが正しくないため、コンパイルできません。

クラスのJavadocを見てください。

getMethod(String name, Class<?>... parameterTypes) 

それは持っていないgetMethod(と呼ばれる方法)最初のパラメータとしてメソッドのオブジェクトを有している:それだけgetMethodと呼ばれる一つの方法を有しています。

0

私は、そうでない場合、コールは次のようになり、あなたがそこにコードの一部が欠落している願っています:

action = getClass().getMethod(null, null); 

そして、それはあなたにNullPointerExceptionがなるだろう。 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#getMethod(java.lang.String、java.lang.Class ...)

getMethodは、最初の引数をメソッド名に、残りの引数をパラメータ型として、指定されたクラスのメソッドを検索します。

あなたのコードは、指定された名前でクラスのメソッドを取得しようとしています(これはアクションであってはいけません...本当にコピーの貼り付けの問題ですか?)、あなたのクラスで呼び出します現在のインスタンス(this)。

このメソッドは引数を受け付けないので、getMethodとinvokeの両方の第2引数としてnullが渡されます(これは冗長で省略することができます)。

0

このコードがコンパイルされるのではないでしょうか。 java.lang.Class#getMethod(...)

public Method getMethod(String name, 
        Class... parameterTypes) 
      throws NoSuchMethodException, 
        SecurityException 

それは公共のそのクラスのメソッド、および前記方法をとるパラメータの型の名前を取るを見てください。このメソッドが所属するObjectのインスタンスとそれにかかるパラメータを渡すことによって呼び出すことができるMethodオブジェクトを返します。

これはあなたのコードが実行しようとしているものです。 (失敗したようです)

0

その他のコメントは、java.lang.Methodのドキュメントに関する話です。

あなたが指定したコードでは、基本的に "actionName"という名前のメソッドを取得しようとしています(とにかくtypo btwだと思います)。そして、そのメソッドを呼び出します。 。これは、if-elseの多くをやりたくない場合に便利です。代わりに例えば

場合( "第一"。(actionName)と等しい)first();

else if( "second" .equals(actionName))second();

.....

あなたが貼り付けられているコードに置き換えることができます。そうすれば、コードを変更せずに新しいメソッドを追加するだけで、新しいアクションとしてサポートされます。

「actionName」が消毒されていることを確認している限り(たとえば、deleteAllなどと呼ばれることはありません)、これは良いアプローチです。

関連する問題