Java 使用反射调用方法并返回映射

Java 使用反射调用方法并返回映射,java,reflection,map,Java,Reflection,Map,我试图使用Java中的反射在示例模型类中调用一个方法process。该方法接受字符串和字符串的映射,并返回相同的内容,即字符串和字符串的映射 下面是我的代码,但不知何故每次都会给我一个异常 Map<String, String> test = new LinkedHashMap<String, String>(); try { test.put("CGUID", "ABCD"); test.put("RESOURCEINDEX", "XYZ");

我试图使用Java中的反射在示例模型类中调用一个方法
process
。该方法接受字符串和字符串的映射,并返回相同的内容,即字符串和字符串的映射

下面是我的代码,但不知何故每次都会给我一个异常

Map<String, String> test = new LinkedHashMap<String, String>();
try {

    test.put("CGUID", "ABCD");
    test.put("RESOURCEINDEX", "XYZ");

    Method m = SampleModel.class.getDeclaredMethod("process", Map.class);
    Object o = m.invoke(null, test);

}
更新:-

    Class<SampleModel> consClass = SampleModel.class;
            Map<String, String> test = new LinkedHashMap<String, String>();
            try {

                test.put("CGUID", "ABCD");
                test.put("RESOURCEINDEX", "XYZ");

                Method m = SampleModel.class.getDeclaredMethod("process", Map.class);
                Object o = m.invoke(consClass, test);
}
Class=SampleModel.Class;
映射测试=新建LinkedHashMap();
试一试{
测试。放置(“CGUID”、“ABCD”);
测试放置(“资源索引”、“XYZ”);
方法m=SampleModel.class.getDeclaredMethod(“process”,Map.class);
对象o=m.invoke(conclass,test);
}
上面的代码也不工作?这给了我一个例外-


对象不是声明类的实例

您的方法不是静态的,因此在调用
调用
时需要提供实例

SampleModel instanceOfYourClass = ...// get an instance
Object o = m.invoke(instanceOfYourClass, test);

如果方法是
static
,则只能将
null
传递给
invoke
调用。阅读解释这一点的javadoc。

您的方法不是静态的,因此在调用
invoke
时需要提供一个实例

SampleModel instanceOfYourClass = ...// get an instance
Object o = m.invoke(instanceOfYourClass, test);
如果方法是
static
,则只能将
null
传递给
invoke
调用。阅读解释此问题的javadoc。

如果
m.invoke(null,test)
抛出
NullPointerException
,则
过程
方法很可能不是静态的

如果无法更改该方法的签名,则应将
SampleModel
的实例传递给
m.invoke
,而不是
null

假设
SampleModel
构造函数是公共的,并且没有参数,您不需要实例本身来做任何事情,比如:

m.invoke(new SampleModel(), test);
如果
m.invoke(null,test)
抛出
NullPointerException
,则
过程
方法很可能不是静态的

如果无法更改该方法的签名,则应将
SampleModel
的实例传递给
m.invoke
,而不是
null

假设
SampleModel
构造函数是公共的,并且没有参数,您不需要实例本身来做任何事情,比如:

m.invoke(new SampleModel(), test);

m
null吗?
过程
的签名是什么样子的?我刚刚更新了这个问题。。没有m不是空的。
m
null?
过程
的签名是什么样子的?我刚刚更新了这个问题。。不,m不是空的..我用更新的代码更新了我的问题,但现在它给了我不同的异常。。可能是我做得不对。@TrekkieTechieT-T如果你不想要你的类的
对象,你想要它的一个实例,比如
SampleModel instanceOfYourClass=new SampleModel()
。我用更新的代码更新了我的问题,但现在它给了我不同的异常。。可能是我做得不对。@TrekkieTechieT-T如果您不想要类的
Class
对象,您需要它的实例,比如
SampleModel instanceOfYourClass=new SampleModel()