在java反射中找不到类
我正在学习java反射。我正在使用以下代码。但当我运行时,它给出了错误 未报告的异常类NotFoundException;必须被抓住,否则 宣布被抛出 Class className=Class.forName(“第一”) 也许我哪里出了问题。请帮帮我。代码如下:在java反射中找不到类,java,reflection,Java,Reflection,我正在学习java反射。我正在使用以下代码。但当我运行时,它给出了错误 未报告的异常类NotFoundException;必须被抓住,否则 宣布被抛出 Class className=Class.forName(“第一”) 也许我哪里出了问题。请帮帮我。代码如下: import java.lang.reflect.Method; public class First{ public void print(){} public void ready(){}
import java.lang.reflect.Method;
public class First{
public void print(){}
public void ready(){}
}
public class test{
public static void main(String args[])
{
Class className=Class.forName("com.Test.First");
Method[] methods=className.getMethods();
System.out.println("First method is" + methods[0]);
}
}
它的意思是Class.forName抛出这个(非运行时)异常,所以您必须以某种方式处理它。这里有两种方法可以做到这一点
public class test{
public static void main(String args[]) throws ClassNotFoundException
{
Class className=Class.forName("com.Test.First");
Method[] methods=className.getMethods();
System.out.println("First method is" + methods[0]);
}
}
或
public class test{
public static void main(String args[])
{
try {
Class className=Class.forName("com.Test.First");
Method[] methods=className.getMethods();
System.out.println("First method is" + methods[0]);
}
catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
}
这条线就是问题所在
Class className=Class.forName("com.Test.First");
在
Class.forName(“com.Test.First”)
中,您可以用任何乱七八糟的语言替换com.Test.First
,编译器应该不会太在意为您验证它。编译器只知道有可能不存在类com.Test.First
,因此您负责处理ClassNotFoundException
它的意思就是它所说的。您必须将抛出ClassNotFoundException
添加到main
方法中,或者需要将生成编译错误的语句包含在try
块中,该块后跟catch(ClassNotFoundException e)
。感谢VGR。知道了。