Java:方法明确存在时出现NoSuchMethodException

布莱恩·S:

在我当前的项目中,我感到有必要使用反射在Java中创建一种模拟的回调系统。但是,我遇到了使自己的思考真正起作用的问题。错误代码如下:

public Callback(Object parentObj, String methodName, Class<?>...parameters)
{
    if(parentObj == null)
        throw new IllegalArgumentException("parentObj cannot be null", new NullPointerException());

    Class<?> clazz = parentObj.getClass();

    // Trace debugging, see output
    for(Method m : clazz.getDeclaredMethods())
        if(m.getName().equals("myMethod")) System.out.println (m);

    try { this.method = clazz.getMethod(methodName, parameters); }
    catch(NoSuchMethodException nsme) { nsme.printStackTrace(); } // Exception caught
    catch(SecurityException se) { se.printStackTrace(); }

    this.parentObj = parentObj;
    this.parameters = parameters;
}

在构造Callback对象时,我使用的语法如下:

new Callback(this, "myMethod", boolean.class)

当我尝试创建伪回调时,它会遇到NoSuchMethodExceptioncatch块。我在上面包括了一些跟踪调试,以显示我的方法之一失败的输出。输出:

private void my.package.MyClass.myMethod(boolean)
java.lang.NoSuchMethodException: my.package.MyClass.myMethod(boolean)
    at java.lang.Class.getMethod(Class.java:1605)
    at my.package.other.Callback.<init>(Callback.java:63)

我无法解决问题,所以我开始狩猎,但无济于事。我能找到的最好的地方就是提到已编译的JAR和运行时之间的版本冲突。但是,MyJar.jar/META-INF/MANIFEST.MF包含Created-By: 1.6.0_02 (Sun Microsystems Inc.)我的IDE正在运行C:\Program Files\Java\jdk1.6.0_02\bin\javac.exe以编译我的项目。我正在C:\Program Files\Java\jdk1.6.0_02\bin\java.exe运行我的JAR。

我无所适从,为什么Class.getMethod声称该方法不存在,但是Class.getMethods找到它似乎没有问题。救命?:(

ZZ编码器:

您的方法是私有方法,但getMethod()仅返回公共方法。

您需要使用getDeclaredMethod()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

来自分类Java

一种方法是不明确时传递的Java lambda表达式

来自分类Java

从迁移到java8时java9参考方法是不明确的

来自分类Java

Java方法调用不明确

来自分类Java

Java 8:对[方法]的引用不明确

来自分类Java

使用反射访问Kotlin Data类时出现NoSuchMethodException

来自分类Java

错误显示我在用Java编写的类中明确编写了Method时未定义的方法?

来自分类Java

使用替代方法更改Java版本时出现问题

来自分类Java

方法绝对存在时的java.lang.NoSuchMethodError

来自分类Java

升级到Quarkus 1.3.0-FINAL后运行测试时出现NoSuchMethodException错误

来自分类Java

Java反射错误Java.lang.NoSuchMethodException,但是方法存在

来自分类Java

版本升级版本> 2.6.1时出现严重错误-NoSuchMethodException:BasePathAwareServicesProvider。<init>()

来自分类Java

Java:即使该方法存在,NoSuchMethodException

来自分类Java

明确声明lib时出现UnsatisfiedLinkError异常

来自分类Java

当applicationContext.getBean(beanName)明确存在时,为什么返回null?

来自分类Java

尝试使用OncePerRequestFilter时发生java.lang.NoSuchMethodException

来自分类Java

JAVA getConstructor抛出NoSuchMethodException

来自分类Java

获取java.lang.NoSuchMethodException:使用PropertyUtils.setSimpleProperty函数时,属性“ xx”在类“类xx”中没有setter方法

来自分类Dev

内联名称空间存在时,如何明确引用封闭的名称空间?

来自分类Dev

熊猫-密钥存在时出现密钥错误

来自分类Dev

Android:存在类时出现ClassNotFoundException

来自分类Dev

使用if-else创建新列时出现熊猫错误:系列的真值不明确

来自分类Dev

使用String.Length时出现Math.Ceiling给出“呼叫不明确”错误

来自分类Dev

Scala案例类中的init方法的java.lang.NoSuchMethodException

来自分类Dev

在实现的接口使用泛型时明确调用Java中的默认方法

来自分类Dev

斯卡拉(Scala)。实例化特征时出现NoSuchMethodException

来自分类Dev

存在引用和值重载时的函数调用不明确

来自分类Dev

NoSuchMethodException:运行pyspark代码zepplin时出现scala.tools.nsc.interpreter.ILoop.scala

来自分类Dev

为什么在文件中明确指定了executionRoleArn时却出现错误?

来自分类Dev

当同时存在转换构造函数和运算符且涉及明确性时的行为

TOP 榜单

热门标签

归档