我试图创建一个简单的程序,但当然JAVA不这么认为:它并不那么简单。 我需要动态实例化一个类,这意味着用户从键盘中提供类名,然后创建具有该名称的类类型的对象。 代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.*;
public class NimMain {
public static void main(String[] args) throws IOException {
BufferedReader Olvaso = new BufferedReader(new InputStreamReader(System.in));
String be = Olvaso.readLine();
String[] kapcsolo = be.split(" ");
switch (kapcsolo[0]) {
case "uj": uj(kapcsolo);
case "lep":
case "listaz":
case "ment":
case "tolt":
}}
public static void uj(String[] s) {
try {
int b = 2;
String nev = s[1];
Class NimJatek = Class.forName(nev);
Constructor con = NimJatek.getConstructor(String[].class, int.class);
Object xyz = con.newInstance(s,b);
} catch (Exception e) {
e.printStackTrace();
}
}
}
无法实例化的类是NimJatek
,它位于相同(未命名)包中的同一目录中。
当我尝试运行此程序时,它会出现java.lang.ClassNotFoundException
错误。
答案 0 :(得分:0)
我认为你用不太清楚的结构让自己感到困惑。最后,使用输入字符串的第二个值作为类加载。如果你提供正确的字符串,它将被正确加盖。输入字符串:
"uj NimJatek"
将导致正确找到类NimJatek - 如果NimJatek位于您的根包中,则此根包位于您的类路径中。