我正在尝试通过反射(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/