猿问

java 反射错误

实体类:[/color]
public class Hotel {

private long id;

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

}

测试方法:

public void testReflect() throws Exception{
Object object = Hotel.class.newInstance();
String setMethod = "setId";
Method method = object.getClass().getDeclaredMethod(setMethod, new Class[]{Object.class});
method.invoke(object, new Object[]{1L});
}

出错信息

java.lang.NoSuchMethodException: setId
at java.lang.ClassCache.findMethodByName(ClassCache.java:247)
at java.lang.Class.getDeclaredMethod(Class.java:731)
at java.lang.reflect.Method.invokeNative(Native Method)

慕莱坞森
浏览 537回答 4
4回答

侃侃无极

Method method = object.getClass().getDeclaredMethod(setMethod, new Class[]{[color=red]long.class[/color]});

蝴蝶刀刀

public void testReflect() throws Exception{ Object object = Hotel.class.newInstance(); String setMethod = "setId"; Method method = object.getClass().getMethod(setMethod); method.invoke(object, new Object[]{1L}); }

眼眸繁星

public static void main(String[] args) throws Exception{Object o = Hotel.class.newInstance();String setMethod = "setId";Method[] methods = o.getClass().getMethods();for(int i=0;i<methods.length;i++){Method m = methods[i];// System.out.println(m.getName());if(m.getName().equals("setId")){System.out.println("1111");m.invoke(o, new Object[]{1L});}&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;//method.invoke(o,&nbsp;new&nbsp;Object[]{1L}); }

ABOUTYOU

亲,其实这样写就可以了!Method method = Hotel.class.getMethod("setId",long.class);
随时随地看视频慕课网APP

相关分类

Java
我要回答