- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在尝试在 Java 中使用 Reflection
,但结果并不理想。这是我的代码:
public class ReflectionTest {
public static void main(String[] args) {
ReflectionTest test = new ReflectionTest();
try {
Method m = test.getClass().getDeclaredMethod("Test");
m.invoke(test.getClass(), "Cool story bro");
} catch (NoSuchMethodException | SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void Test(String someawesometext) {
System.out.println(someawesometext);
}
}
我刚遇到 java.lang.NoSuchMethodException
错误,我已经尝试了几乎所有方法。就像使用 getMethod
而不是 getDeclaredMethod
一样,在 getDeclaredMethod 中的
等等。 "Test"
之后添加 test.getClass()
这是堆栈跟踪:
java.lang.NoSuchMethodException: ReflectionTest.Test()
at java.lang.Class.getDeclaredMethod(Unknown Source)
at ReflectionTest.main(ReflectionTest.java:10)
我已经在谷歌上搜索了很多天,但一无所获。所以有人知道我应该如何解决这个问题吗?
最佳答案
您在 getDeclaredMethod
中指定了一个名称但没有参数,尽管 Test
方法在其签名中确实有一个参数。
试试这个:
Method m = test.getClass().getDeclaredMethod("Test", String.class);
连同这个:
m.invoke(test, "Cool story bro");
因为 Method.invoke
的第一个参数期望一个对象。然而,在静态方法的情况下,这个参数被忽略:
If the underlying method is static, then the specified obj argument is ignored. It may be null.
关于java - getDeclaredMethod 不起作用,NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465407/
我有一个简单的问题。我想在 getDeclaredMethod() 中获取 String.TYPE 作为 parameterType,但我找不到它。例如,有 Long。 TYPE 用于长数据类型,但对
我想编写一个通过 rpc 进行通信的客户端服务器应用程序。该代码对于不带参数的函数运行得很好。但是,当我尝试使用单个参数调用函数(不支持更多参数)时,它会给我一个“NoSuchMethodExcept
我有两个对象,我可能需要调用方法,但我不知道它属于哪一个。现在,我的基本工作流程是这样的: Method method = null; Target target = null; try {
我有一个私有(private)方法,标题是: private fun setNumericListener(editText: EditText, onValueChanged:(newValue:
我想使用 getDeclaredMethod() 来查找具有此签名的方法: public void foo(String inArg1, Object... inArgs); 使用这个调用: Clas
我使用以下代码来打印类的方法: for (Method meth : c.getDeclaredMethods()) { System.out.println(" " + shorten(met
我看过一些关于 getDeclaredMethod 的 NoSuchMethodException 的帖子,但我仍然无法摆脱这个问题。 我将问题简单化了,有人可以解决这个问题吗: public cla
我正在使用反射,我注意到意想不到的方法。我完全将范围缩小到这几行重现问题的代码: import java.lang.reflect.Method; import java.util.Arrays; c
我对 kotlin 中的“getDeclaredMethod”有疑问。 我有一个类: class WorksheetFreeField : Serializable { @SerializedName
这个问题已经有答案了: Testing private method using power mock which return list of Integers (4 个回答) 已关闭 8 年前。
我的通用类如下所示: interface X { Output process(Input input); } class Y implements X { Float process(I
我正在使用反射从特定类中获取所有方法。 这个类引用了不在我的类路径中的类,所以我得到一个异常: java.lang.NoClassDefFoundError: 关于这个: Method methods
这是 getDeclaredMethods 发生的奇怪行为,这是场景,一个名为 Entity 的类: public class Entity { private Object reference; /
我的代码有一个小问题 我有两个类 public class A { public A foo(int a) {return new A();} } public class B extend
这个问题在这里已经有了答案: getDeclaredMethods() behaving differently in Java 7 vs. Java 8 (2 个答案) 关闭 7 年前。 考虑下一
我的代码有一个小问题 我有两个类(class) public class A { public A foo(int a) {return new A();} } public class B
所以我正在加载类(class)并且效果很好。然后执行 getDeclaredMethods() 并得到一个 NoClassDefFounfError。我能够在方法内部对其进行跟踪,这是在线的内容。 d
public Method[] getDeclaredMethods() throws SecurityException 具有如下文档。 /** * * Returns an a
我在 A 类中有一个方法: class Parameter { ... } class A { private void call(T object, Parameter... paramet
我一直在尝试在 Java 中使用 Reflection,但结果并不理想。这是我的代码: public class ReflectionTest { public static void mai
我是一名优秀的程序员,十分优秀!