Проблема заключается в том, чтобы вызвать метод отображения класса Honda. Какой метод класса будет вызываться, зависит от строковой переменной, которая будет передана во время выполнения. Здесь я использовал один родительский класс Honda, чтобы добиться полиморфизма во время выполнения. Но тогда я получаю ClassNotFoundException, даже если оно включено в предложение throws основного. Не в состоянии понять, что делать.
Вот код всех трех классов, находящихся в одном пакете.
Автомобиль.java
package com.company;
public class Vehicle {
public void display() {
System.out.println("Random text");
}
}
Honda.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)
Я думаю, что мне также нужно обработать ClassNotFoundException в классе Honda, но расширения и броски не могут работать одновременно. Пожалуйста, помогите мне найти проблему.