【发布时间】:2021-08-17 19:53:09
【问题描述】:
问题是调用本田类的显示方法。将调用哪个类方法取决于将在运行时传递的字符串变量。在这里,我使用了 Honda 的一个父类,以便实现运行时多态性。但后来我得到了 ClassNotFoundException,即使它包含在 main 的 throws 子句中。不知道该怎么办。
这是同一个包中所有三个类的代码。
Vechicle.java
package com.company;
public class Vehicle {
public void display() {
System.out.println("Random text");
}
}
本田.java
package com.company;
public class Honda extends Vehicle{
public void display()
{
System.out.print("honda called");
}
}
Main.java
package com.company;
import java.lang.reflect.InvocationTargetException;
public class Main {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
String className = "Honda";
Class cls = Class.forName(className);
Vehicle v = (Vehicle) cls.getDeclaredConstructor().newInstance();
v.display();
}
}
我得到的错误是:
Exception in thread "main" java.lang.ClassNotFoundException: Honda
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at com.company.Main.main(Main.java:10)
我认为我还需要处理 Honda 类中的 ClassNotFoundException,但 extends 和 throws 不能同时工作。请帮我找出问题。
【问题讨论】:
标签: java function-call dynamicobject