当前位置: 首页 > 编程笔记 >

什么是ClassCastException?何时将其抛出Java?

韩高峯
2023-03-14
本文向大家介绍什么是ClassCastException?何时将其抛出Java?,包括了什么是ClassCastException?何时将其抛出Java?的使用技巧和注意事项,需要的朋友参考一下

java.lang.ClassCastException是一个未经检查 的异常 在Java中。当我们试图将一种类型的对象转换为一种类型 的对象时,它可能会在程序中发生。

什么时候会抛出ClassCastException

  • 当我们尝试将Parent类的对象转换 为其 Child类类型时,将抛出此异常。

  • 当我们尝试将一个类的对象转换为尚未扩展另一类或它们之间没有任何关系的另一类类型时。

示例

class ParentTest {
   String parentName;
   ParentTest(String n1){
      parentName = n1;
   }
   public void display() {
      System.out.println(parentName);
   }
}
class ChildTest extends ParentTest {
   String childName;
   ChildTest(String n2) {
      super(n2);
      childName = n2;
   }
   public void display() {
      System.out.println(childName);
   }
}
public class Test {
   public static void main(String args[]) {
      ChildTest ct1 = new ChildTest("Jai");
      ParentTest pt1 = new ParentTest("Adithya");
      pt1 = ct1;
      pt1.display();

      ParentTest pt2 = new ParentTest("Sai");
      ChildTest ct2 = (ChildTest)pt2;
   }
}

输出结果

Jai
Exception in thread "main" java.lang.ClassCastException: ParentTest cannot be cast to ChildTest
        at Test.main(Test.java:30)
 类似资料:
  • 问题内容: 我试图将两个’Employee’对象添加到TreeSet中: 但是它抛出一个ClassCastException: 但是,如果我仅将一个对象添加到TreeSet中: 或者,如果我改用HashSet: 那就成功了。为什么会发生异常,我该如何解决? 问题答案: 要么必须实现,或者你需要提供一个比较创建时。 在文档中对此进行了详细说明: 插入排序集中的所有元素都必须实现接口(或被指定的比较器

  • 泛型方法 在控制器中获取列表 测试 测试 结果[java.lang.ClassCastException] 为什么该类强制执行异常,因为criteria.SetProjection(pl)返回条件,然后返回相同列表的条件。 如何对此进行动态控制? 更新我!

  • 问题内容: 我正在使用ant生成javadocs,但是一遍又一遍地获取此异常-为什么? 我正在使用JDK 1.6.0_06 版本。 问题答案: 看来这已被报告为Java错误。这似乎是由于使用了第三方库(例如JUnit)中的注释,而在Javadoc调用中不包含带有该注释的jar。 如果是这种情况,只需在javadoc上使用-classpath选项并包括额外的jar文件。

  • 问题内容: 在我的应用程序中,有时会引发以下异常: 很难找到错误,因为在stacktrace中没有列出我的方法。那么,有人知道何时抛出此异常吗?感谢您的任何提示。 问题答案: 您可以在stacktrace中看到错误: 适配器的内容已更改,但ListView没有收到通知。确保不从后台线程修改适配器的内容,而仅从UI线程修改。 您应该调查一个线程,并使其与UI线程同步。 在Android中执行此操作的

  • 问题内容: 我担心这是运行时异常,因此应谨慎使用。 标准用例: 但这似乎会强制执行以下设计: 使它回到被检查的异常。 好的,但是让我们开始吧。如果输入错误,则会出现运行时错误。首先,这实际上是统一实施的相当困难的策略,因为您可能必须执行相反的转换: 更糟的是-虽然可以预期客户端代码将以静态方式进行检查,但对于更高级的数据(例如电子邮件地址)却并非如此,或更糟糕的是,必须对数据库进行检查,因此,一般

  • 我担心这是一个运行时异常,所以应该谨慎使用。 标准用例: 但这似乎会迫使以下设计: 将其恢复为检查异常。 好吧,但我们还是继续吧。如果输入错误,则会出现运行时错误。因此,首先,这实际上是一个很难统一实施的政策,因为您可能需要进行相反的转换: 更糟糕的是,在检查