class j {
public static void main(String args[])
{
Object obj=new Object();
String c ="Object";
System.out.println(Class.forName(c).isInstance(obj));
}
}
在上面的代码中我试图找出obj是否是Object的实例。我应该得到答案为真,但我得到一个错误。我无法弄清楚为什么错误正在发生。任何人都可以帮帮我吗?
error: unreported exception ClassNotFoundException; must be caught or
declared to be thrown
System.out.println(Class.forName(c).isInstance(obj));
答案 0 :(得分:2)
你必须在try catch中包围代码,否则你必须确保main可以抛出异常:
try {
System.out.println(Class.forName(c).isInstance(obj));
} catch(ClassNotFoundException ex) {
// do something in case class can not be found
}
或
public static void main(String args[]) throws ClassNotFoundException
在没有任何安全网的情况下,你不能留下能够抛出异常的代码。
确保使用类的完全限定名称:
java.lang.ClassNotFoundException
或在源代码的开头导入它:
import java.lang.ClassNotFoundException;
答案 1 :(得分:2)
2件事:
方法 forName 会引发异常,因此您需要捕获它们或重新抛出它。
只是做Class.forName("Object")
不正确,您需要使用所需类的完全限定名称(即包含包)
参数:className - 所需类的完全限定名称。
String c = "java.lang.Object";
System.out.println(Class.forName(c).isInstance(obj));
答案 2 :(得分:1)
方法Class.forName声明它抛出Exception ClassNotFoundException ,因此在您的代码中,您需要捕获它或声明在方法声明中抛出ClassNotFoundException 。因此
Public static void main(String[] args) throws ClassNotFoundException {
或
try {
System.out.println(Class.forName(c).isInstance(obj));
} catch (ClassNotFoundException ex) {
System.out.println(ex.getMessage());
}