gpt4 book ai didi

Java 反射 : invoking inherited methods from child class

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:01 27 4
gpt4 key购买 nike

在我的应用程序中,我有以下结构:

public class ParentClass{
public void method1()
{....}

public void method2()
{....}

public void method3()
{....}

public void method4()
{....}

public void method5()
{....}
}

public class ChildClass extends ParentClass{
public void method3()
{....}

public void method4()
{....}
}


//I have exported the above class in a jar file.
//--------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX---------------------------

public class TestClass{
public static void main(String args[]) {
String jarpath = "jar path of the above class"
File jarFile = new File(jarpath);
URLClassLoader classLoader = new URLClassLoader(new URL[]{jarFile.toURI().toURL()},Thread.currentThread().getContextClassLoader());
Class<?> dynamicClass = (Class<?>) classLoader.loadClass("packageName.ChildClass");
Constructor<?> cons = dynamicClass.getConstructor();
classObject = cons.newInstance();
Method method = obj2.getClass().getDeclaredMethod("method1",null);
method.invoke(obj2);
}
}

在上面的调用中,当我从 ChildClass 的对象调用 method1 时,它抛出 java.lang.NoSuchMethodException

在实际场景中,ParentClass 有数百个方法,它们像主存储库一样工作,我们为每个客户端创建单独的 ChildClass 并覆盖客户端特定更改的方法。

有没有办法从子类对象中调用父类的方法(不被覆盖)?

最佳答案

您需要使用 getMethod(String name, Class<?>... parameterTypes)而不是 getDeclaredMethod

关于Java 反射 : invoking inherited methods from child class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42901445/

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