gpt4 book ai didi

java - 为什么使用 CachingParanamer 时 Paranamer 不返回方法名称?

转载 作者:行者123 更新时间:2023-12-01 04:35:39 27 4
gpt4 key购买 nike

我正在尝试使用 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]);
}
}
}

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

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

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

最佳答案

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

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

Paranamer paranamer = new AdaptiveParanamer();

关于java - 为什么使用 CachingParanamer 时 Paranamer 不返回方法名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409230/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com