2

我正在尝试使用paranamer库来检索我的类的参数名称。

但是,它不返回一种方法的参数名称。这是我试图返回名称的带有参数的方法的类:

package domain;

public class DomainTest {
    private String attribute1;
    private int attribute2;

    public DomainTest() {
    }

    public DomainTest(String attribute1, int attribute2) {
        super();
        this.attribute1 = attribute1;
        this.attribute2 = attribute2;
    }

    public void someMethod(String paramTest) {
        System.out.println("METHOD IN DOMAIN CLASS");
    }

    public String getAttribute1() {
        return attribute1;
    }

    public int getAttribute2() {
        return attribute2;
    }    
}

方法someMethod

在这里,类试图返回参数的名称:

package tests;

import java.lang.reflect.Method;
import com.thoughtworks.paranamer.CachingParanamer;
import com.thoughtworks.paranamer.Paranamer;
import domain.DomainTest;

public class Test {
    public static void main(String[] args) {
        Class<?> myClass = DomainTest.class;

        System.out.println("CLASS NAME " + myClass.getCanonicalName());

        String[] ParameterNames = null;

        Paranamer paranamer = new CachingParanamer();

        for (Method method : myClass.getDeclaredMethods()) {
            System.out.println("METHOD NAME: " + method.getName());
        
            ParameterNames = paranamer.lookupParameterNames(method, false);
        
            if (ParameterNames.length > 0) {
                System.out.println("OK!");
            } else {
                System.out.println("NO!");
            }
        }

        System.out.println("TESTING!");

        for (int i = 0; i < ParameterNames.length; i++) {
            System.out.println("PARAMETER NAME " + ParameterNames[i]);
        }
    }
}

我还在这里看到,paranamer 类只能使用-ginjavac或在 Eclipse IDE 的 Java 编译器中设置调试信息来获取参数名称。

我做了这个,还是不行,没有返回someMethod上面方法的参数名。我正在使用 Paranamer 2.5.2。

在这种情况下,如何让 Paranamer 返回我的方法名称?

4

1 回答 1

1

在巴西论坛(http://www.guj.com.br)的帮助后,我已经解决了

我必须使用 AdaptiveParameter 而不是 CachingParameter,这样:

Paranamer paranamer = new AdaptiveParanamer();
于 2013-07-03T15:11:23.867 回答