我尽力了标题,但它可能不是写它的好方法,所以我会尽力解释问题。对于熟悉Windows BATCH的人,此代码
set /p var =
goto %var%
将带您进入名称为存储在变量
var
中的字符串的页面。我需要在Java中做同样的事情。是的,我完全意识到,使用if
语句对该想法很满意,只是它需要更多的代码行。我的方法是这样的:import java.util.Scanner;
public class blarg {
public static void main(String[] args) throws NullPointerException{
Scanner scan = new Scanner(System.in);
String spell = scan.nextLine();
ClassLoader cl = null;
Class cls = (cl.loadClass(spell)).class;
String name = cls.getName();
cl.loadClass(name);
}
}
我的目标是在用户不清楚的情况下(因为不清楚,因为我不知道它是否可行或是否使用了正确的代码),将用户输入的内容输入变量
spell
。然后,我使用Class cls = (cl.loadClass(spell)).class
获取与spell
关联的类,然后获取该类,使用String name = cls.getName();
获取完全限定的名称,最后加载该类。我在Eclipse中收到以下错误:
线程“主”中的异常java.lang.Error:未解决的编译问题:令牌“类”上的语法错误,应使用标识符
因此,是否有某种方法可以解决该语法错误(通过添加标识符),或者其他人是否知道可以执行我尝试做的事情?如果不是这样,我绝不反对使用
if
语句,我只是认为如果可以进行这项工作,可以使我的生活更轻松。如果您需要更多信息,我会尽力提供。 最佳答案
使用.class
的规则是here
类文字是由类名称组成的表达式,
接口,数组或原始类型,或伪类型void
用“。”和令牌类。
所以你不能这样使用
Class cls = (cl.loadClass(spell)).class;
loadClass()
方法已经加载您的类,只需使用Class cls = cl.loadClass(spell);
假设
spell
包含完全限定的类名。除非它是完全限定的名称,否则您将无法找到带有
forName()
的类。不要忘记获得
ClassLoader
参考。