java反射问题

标签 java reflection

我正在尝试通过反射(reflection)解决以下问题。我有一个 POJO,它充当 TestResponse 类中方法签名的元数据。 TestResponse 有一个 setDate() 方法,它接受一个 Date 参数。我试图使其成为一个通用代码,它可以接受任何方法及其签名以在响应中设置。我无法弄清楚的是如何在根据输入调用 getMethod() 时设置参数 Class 。输入告诉我将参数设置为日期,但不知道如何实现这一点。

这是我的示例代码。当然,mdi.modifier.getClass() 是错误的,因为它会得到 String.class 而不是 Date.class。

TestResponse response = new TestResponse();
Object val = "test";
MDIBase mdi = new MDIBase("setDate", "Date");
Method m = response.getClass().getMethod(mdi.method, mdi.modifier.getClass());
m.invoke(response, new Object[] { val });

这是 MDIBase

public class MDIBase {
public String method;
public String modifier;
public MDIBase(String method, String modifier){
this.method = method;
this.modifier = modifier;
}

任何指点都将受到高度赞赏。

谢谢

最佳答案

我不确定我是否完全理解您的意思,但如果我完全理解您的意思,您希望能够传入参数的类名吗?

为了做到这一点,不要传入“Date”,而是传入“java.util.Date”(这称为完全限定的类名),然后代替 getClass 调用

response.getClass().getMethod(mdi.method, Class.forName(mdi.modifier));

这将动态加载具有您提供的完全限定名称的类。

这就是你要找的吗?如果没有,请给我更多信息,我会再次尝试。

关于java反射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991370/

相关文章:

Java JPA 一对多

Java - 将变量列表转换为变量名到变量值的映射

.net - 在运行时设置可浏览属性的值

java - 在 Java 中获取包装类类型的简单方法

c# - 使用反射在类实例中按名称获取属性值

java - 从 Firefox 扩展的 Javascript 访问 Java 类时遇到问题

java - 如何等到服务器上线才能访问 REST API

java - 使用 JAXB 将 XML 解码为对象

java - 你如何为 jgit 设置 jschconfigsessionfactory 的配置,以便 pull 和 push 工作?

java - 发布/记录 Spring-REST API