当前位置: 首页 > 面试题库 >

无法在运行时在Java中向下转换

梁马鲁
2023-03-14
问题内容

我有动物课和狗课,如下所示:

  class Animal{}
  class Dog extend Animal{}

和主类:

   class Test{
       public static void main(String[] args){
           Animal a= new Animal();
           Dog dog = (Dog)a;
       }
   }

显示错误:

Exception in thread "main" java.lang.ClassCastException: com.example.Animal cannot be cast to com.example.Dog

问题答案:

动物不可能是狗,也可能是猫,或者像您这样的动物

Animal a= new Animal(); // a points in heap to Animal object
Dog dog = (Dog)a; // A dog is an animal but not all animals are  dog

对于垂头丧气,您必须执行此操作

Animal a = new Dog();
Dog dog = (Dog)a;

顺便说一句,垂头丧气是危险的,您可以使用它RuntimeException,如果出于培训目的也可以。

如果要避免运行时异常,可以执行此检查,但是会慢一些。

 Animal a = new Dog();
 Dog dog = null;
  if(a instanceof Dog){
    dog = (Dog)a;
  }


 类似资料:
  • 我想在远程ubuntu 14.04服务器上安装Eclipse Che IDE。这是我所做的: 打开了从我的笔记本电脑到ubuntu服务器的SSH会话,以“useradm”身份登录 按照此URL安装docker 在/home/useradm/我下载了一个TAR。GZ文件从此处开始 已运行bin/che。sh-我运行,得到以下结果: 我的步子怎么了?:( 从我的浏览器,http://172.16.16

  • 我试图在调试模式下启动我的android应用程序,但每次我检查它说这是错误的。更进一步,在buildtypes中定义的buildconfigField甚至不会显示在BuildConfig中。 这是我的gradle文件: 因此,在Android Studio中,我为我的应用程序选择了build Variant“debug”,但当我在应用程序中点击一个断点并检查的值时,无法解析字段,并且无法解析

  • 我是Tomcat/tech新手,所以如果我在问题描述中犯了任何错误,我很抱歉。 我读过很多关于相关主题的帖子,但由于我已经运行了一个应用程序十年,突然出现这个问题对我来说真的很奇怪。此外,这个环境就像一个测试服务器,目前我是唯一一个使用它的仪表板。因此,系统负载增加的可能性似乎不对;也没有内存泄漏的可能性。 有人能告诉我在这种情况下可能出了什么问题吗? 谢了! 编辑:我认为我的问题是不同的,因为它

  • 我不知道为什么,但是当我试图从JSON获取数据时,我得到了这个错误: JAVA无法在Jsonarray中转换lang.String 这是我的代码, 主要活动: JSON:

  • 我正在试着把cucumber放进圣杯里。我得到以下错误。 什么可能导致这种情况,我如何解决它?

  • null 我的代码是: 我尝试过创建Scala工作表,它工作了。