gpt4 book ai didi

java - 是什么原因导致 "object is not an instance of declaring class"?

转载 作者:太空狗 更新时间:2023-10-29 22:45:09 26 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why do I get “object is not an instance of declaring class” when invoking a method using reflection?

当我运行下面的代码时,为什么会抛出这个错误?

java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.Test.main(Test.java:10)

这是我的主要类(class):

    package com;
public class TestMain {
private String strName = "abcdefg...";

@SuppressWarnings("unused")
private void display(){
System.out.println(strName);
}
}

还有我的测试类:

    package com;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
Class<TestMain> tm = null;
try{
tm= TestMain.class;
Method m1 =tm.getDeclaredMethod("display");
m1.setAccessible(true);
m1.invoke(tm);
}catch(Exception e){
e.printStackTrace();
}
}
}

这是我修改后的代码,谢谢:

package com;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
TestMain tm =new TestMain();
try{
Method m1 = tm.getClass().getDeclaredMethod("display");
m1.setAccessible(true);
m1.invoke(tm);
}catch(Exception e){
e.printStackTrace();
}
}
}

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