首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClassNotFoundException in isInstance

ClassNotFoundException in isInstance
EN

Stack Overflow用户
提问于 2017-06-01 06:35:27
回答 3查看 171关注 0票数 0
代码语言:javascript
复制
class j {
public static void main(String args[])
    {
        Object obj=new Object();
        String c ="Object";
        System.out.println(Class.forName(c).isInstance(obj));
    }
}

在上面的代码中,我试图找出obj是否是对象的一个实例,我应该得到正确的答案,但是我得到了一个错误,我无法弄清楚为什么occurring.Can是错误的,请谁来帮我解决?

代码语言:javascript
复制
error: unreported exception ClassNotFoundException; must be caught or 
declared to be thrown
    System.out.println(Class.forName(c).isInstance(obj));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-01 06:40:47

2件事:

  1. 方法forName抛出一个异常,因此您需要捕获它们或重新抛出它们。
  2. 仅仅执行Class.forName("Object")是不正确的,您需要使用所需类的完全限定名(即包含包)。

来自javaDoc

参数:className -所需类的完全限定名。

代码语言:javascript
复制
String c = "java.lang.Object";
System.out.println(Class.forName(c).isInstance(obj));
票数 2
EN

Stack Overflow用户

发布于 2017-06-01 06:39:54

您必须将代码包围在that中,或者必须确保main可以抛出excetpion:

代码语言:javascript
复制
try {
  System.out.println(Class.forName(c).isInstance(obj));
} catch(ClassNotFoundException ex) {
  // do something in case class can not be found
}

代码语言:javascript
复制
public static void main(String args[]) throws ClassNotFoundException

您不能离开代码,这是能够抛出异常,没有任何安全网。

确保使用类的完全限定名称:

代码语言:javascript
复制
java.lang.ClassNotFoundException 

或者在源代码开始时导入它:

代码语言:javascript
复制
import java.lang.ClassNotFoundException;
票数 2
EN

Stack Overflow用户

发布于 2017-06-01 06:49:21

方法Class.forName声明它抛出异常ClassNotFoundException,因此在您的代码中,您需要捕获它,或者在方法声明中声明抛出ClassNotFoundException。因此

代码语言:javascript
复制
Public static void main(String[] args) throws ClassNotFoundException {

代码语言:javascript
复制
try {
        System.out.println(Class.forName(c).isInstance(obj));
} catch (ClassNotFoundException ex) {
  System.out.println(ex.getMessage());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44300141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档