热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何解决Java中的类强制转换异常?

如何解决Java中的类强制转换异常?原文:https://w

如何解决 Java 中的类强制转换异常?

原文:https://www . geesforgeks . org/如何在 java 中解决类转换异常/

扰乱程序正常流程的未被接受的、不想要的事件称为异常。大多数时候异常是由我们的程序引起的,这些是可以恢复的。例如:如果我们的程序要求从位于美国的远程文件中读取数据。在运行时,如果远程文件不可用,那么我们将得到一个运行时异常,表示文件未找到异常。如果出现 fileNotFoundException,我们可以向程序提供本地文件,以便正常读取和继续程序的其余部分。

java 中主要有两种异常类型,如下所示:

*1。检查异常:*编译器在运行时为程序的顺利执行而检查的异常称为检查异常。在我们的程序中,如果有机会出现检查异常,那么我们应该强制处理该检查异常(通过 try-catch 或 throws 关键字),否则我们将得到一个编译时错误。

检查异常的例子有 classNotFoundException、IOException、SQLException 等。****

*2。未检查异常:*未被编译器检查的异常,无论程序员是否处理这种类型的异常,都被称为未检查异常。

未检查异常的例子有算术异常、数组异常等。****

是否检查异常只有在编译时不可能出现任何异常时,每个异常才会在运行时出现。

*ClassCastException:* 它是 RuntimeException 的子类,因此它是一个未检查的异常。每当我们试图不正确地将一个类从一种类型类型转换为另一种类型类型时,即当我们试图将父对象类型转换为子类型类型时,或者当我们试图将一个对象类型转换为它不是其实例的子类时,JVM 会自动产生这个异常。

在下面的程序中,我们创建了一个 object 类型的对象,并将该对象类型转换为 String 对象。我们知道 Object 类是 java 中所有类的父类,当我们试图将父对象类型转换为它的子类型时,我们最终得到了 java.lang.ClassCastException

Java 语言(一种计算机语言,尤用于创建网站)


// import required packages
import java.io.*;
import java.lang.*;
import java.util.*;
// driver class
class geeks {
    // main method
    public static void main(String[] args)
    {
        try {
            // creating an object
            Object o = new Object();
            // type casting the object o to string which
            // give the classcasted exception because we
            // type cast an parent type to its child type.
            String s = (String)o;
            System.out.println(s);
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

**Output

java.lang.ClassCastException: class java.lang.Object cannot be cast to class java.lang.String (java.lang.Object and java.lang.String are in module java.base of loader 'bootstrap')
```**
**为了处理 ClassCastException请注意当您试图将一个类的对象类型转换为另一个类时请确保新类型属于其父类之一或者不要试图将父对象类型转换为其子类型在使用集合时我们可以通过使用泛型来防止 ClassCastException因为泛型提供了编译时检查**
**下面是问题陈述的实现:**
## **Java 语言(一种计算机语言尤用于创建网站)**
```java
// import required packages
import java.io.*;
import java.lang.*;
import java.util.*;
// driver class
class geeks {
    // main method
    public static void main(String[] args)
    {
        try {
            // creating an object
            String s = "GFG";
            Object o = (Object)s;
            // Object class is parent class of every class
            // Hence exception doesn't occur.
            System.out.println(o);
        }
        catch (Exception e) {
            System.out.println(e);
        }
    }
}

**Output

java
GFG
**


推荐阅读
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • ScrollView嵌套Collectionview无痕衔接四向滚动,支持自定义TitleView
    本文介绍了如何实现ScrollView嵌套Collectionview无痕衔接四向滚动,并支持自定义TitleView。通过使用MainScrollView作为最底层,headView作为上部分,TitleView作为中间部分,Collectionview作为下面部分,实现了滚动效果。同时还介绍了使用runtime拦截_notifyDidScroll方法来实现滚动代理的方法。具体实现代码可以在github地址中找到。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 本文介绍了一种求解最小权匹配问题的方法,使用了拆点和KM算法。通过将机器拆成多个点,表示加工的顺序,然后使用KM算法求解最小权匹配,得到最优解。文章给出了具体的代码实现,并提供了一篇题解作为参考。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
author-avatar
l清笛l
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有