0

名前だけからメソッドの戻り値の型を知りたいのですが、そのコードを使用していますが、うまくいきませんでした(常にnullを返します):

public Object getType(String key) throws Exception {

        Object returnType = null;
        String name = key;
        Method[] methods = name.getClass().getMethods();
        for(int i =0; i < methods.length ; i++){
            if(key.equals(methods[i])){
                returnType = methods[i].getReturnType();
            }
        }
        return returnType;
    }
4

3 に答える 3

3

それ以外の:

if(key.equals(methods[i])){

あなたが持っている必要があります

if(key.equals(methods[i].getName())){

また、コードで小さな改善を行うことができます。returnTypeローカル変数は必要なく、探しているメソッドが既に見つかっている場合は、残りのすべてのメソッドを反復処理する必要がないため、コードは次のようになります。

 public Object getType(String key) throws Exception {
    String name = key;
    Method[] methods = name.getClass().getMethods();
    for(int i =0; i < methods.length ; i++){
        if(key.equals(methods[i])){
            return methods[i].getReturnType();
        }
    }
    return null;
}
于 2013-05-30T10:59:38.930 に答える