首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java.lang.ClassCastException(java强制类型转换异常)

Cat();   // 2   Dog d1 = (Dog)a1;  // 3   Dog d2 = (Dog)a2;  // 4 第3行代码和第4行代码基本相同,从字面意思看都是把动物(Animal)强制换为狗...从上面的例子看,java.lang.ClassCastException是进行强制类型转换的时候产生的异常,强制类型转换的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,如果父类引用指向的对象的类型不是子类的时候将产生...java.lang.ClassCastException异常。...就是上面a1和a2都是动物,但是a1这只动物是一只狗,而a2这只动物是猫,所以要把a1换成狗可以,因为a1本身就是狗,而a2是一只猫,所以要转换成狗就出错了。 遇到这样的异常的时候如何解决呢?...如果不能确定类型可以通过下面的两种方式进行处理(假设对象为o):   1、通过o.getClass().getName()得到具体的类型,可以通过输出语句输出这个类型,即System.out.println

43.1K20

java类型强制转换异常例子_java.lang.unsatisfiedlinkerror

/ 2 Dog d1 = (Dog)a1; //3 Dog d2 = (Dog)a2; //4 第3行代码和第4行代码基本相同,从字面意思看都是把动物(Animal)强制换为狗...从上面的例子看,java.lang.ClassCastException是进行强制类型转换的时候产生的异常,强制类型转换的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,如果父类引用指向的对象的类型不是子类的时候将产生...java.lang.ClassCastException异常。...就是上面a1和a2都是动物,但是a1这只动物是一只狗,而a2这只动物是猫,所以要把a1换成狗可以,因为a1本身就是狗,而a2是一只猫,所以要转换成狗就出错了。 遇到这样的异常的时候如何解决呢?...如果不能确定类型可以通过下面的两种方式进行处理(假设对象为o): 1、通过o.getClass().getName()得到具体的类型,可以通过输出语句输出这个类型,然后根据类型进行进行具体的处理。

73910
您找到你想要的搜索结果了吗?
是的
没有找到

Java常见异常类型及原因分析

通常称为对象引用,一般直接说对象),引 用也是要指向一个实例对象(通过 new 方法构造)的,从这种意义上说,Java 中的引用与 C++中的指针没有本质的区别,不同的是,处于安全的目的,在 Java 中不能对引用进行操...Dog d1 = (Dog)a1; Dog d2 = (Dog)a2; //ClassCastException异常 第 3 行代码和第 4 行代码基本相同,从字面意思看都是把动物(Animal)强制换为狗...但是第 4 行代码将产生 java.lang.ClassCastException。原因是你要把一个猫(a2 这只动物是猫)转换成狗不可以,而第 3 行中是把狗转换成狗,所以可以。...从上面的例子看,java.lang.ClassCastException 是进行强制类型转换的时候产生的异常,强制类型转换的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型 换,如果父类引用指向的对象的类型不是子类的时候将产生...java.lang.ClassCastException异常。

3.3K40

JavaSE(五)JAVA对象向上转型和向下转型

java中对象的转型分为向上转型和向下转型 一、对象的向上转型   1.1、定义 子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。...在上面的例子中b不能调用fly方法。 向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提供找不到方法的错误。   ..." java.lang.ClassCastException: com.wensefu.other1.Girl     at com.wensefu.other1.Main.main(Girl.java...情况二:如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误。...三、总结 1、父类引用可以指向子类对象,子类引用不能指向父类对象。 2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。

1K60

一句话,讲清楚java泛型的本质(非类型擦除)

System.out.println(sort2(list).getClass());这行,而不是 returnlist.toArray((T[])newComparable[list.size()]);这行; (4)报的错是 [Ljava.lang.Comparable...回归正题 数组不能向下强我懂了,类型擦除我也懂了,似乎还是过不好这一生,呃不是,是还是解决不了这道题啊?...仔细一看, System.out.println((String)raw("1"));这一句多加了个String强。...而 (String)raw("1")的强还是加上的,这是调用者知道类型是String,所以raw()返回后自己强转成String一下。...总结 java中的泛型只在编译期有效,在运行时只有调用者知道需要什么类型,且调用者调用泛型方法后自己做强制转换,被调用者是完全无感的。

48030

Java 之数据类型

//将int型强制换为byte型, b值为: 5 i2=(int)L1;                          //将long型强制换为int型, i2值为: 102 L2=(long...将基本数据类型转换为其包装类还可以通过包装类的构造方法进行转换,例如将int型整数129换为Integer类型: Integer num=new Integer(129) 各包装类所具有的xxxValue..., 不能将C类型强制换为B类型 如果声明了一个父类型的变量,但使其引用子类对象,在编译时,Java编译器是根据变量被显示声明的类型去编译,因此该变量的类型被看作父类类型,所以将其进行强制类型转换并赋给引用了另一个子类对象的变量时...但在运行时将抛出java.lang.ClassCastException异常,因为这个变量实际引用的是子类对象,两个子类属于不同的类型,也没有继承关系,所以不能将一个子类强制换为另一个子类。...异常 对于引用类型中的数组引用类型,任何的两个不同类型的数组间不能进行类型的转换,但可以将数组转换为java.lang.Object类。

95030

Java核心技术之什么是泛型

官方这话是什么意思呢:当你从集合中取出元素时,必须将其强制换为存储在集合中的元素类型。除了不方便,这是不安全的。编译器不会检查强制转换是否与集合的类型相同,因此强制转换可能会在运行时失败。...可以向数组列表中添加任何类的对象 arrayList.add(new File("/")); // 对于这个调用,如果将get的结果强制类型转换为String类型,就会产生一个错误 /.../ Exception in thread "main" java.lang.ClassCastException: java.io.File cannot be cast to java.lang.String...类型擦除主要包括:一、通用类型的檫除:在类型擦除过程中,Java 编译器将擦除所有类型参数,如果类型参数是有界的,则将每个参数替换为其第一个边界;如果类型参数是无界的,则将其替换为 Object。...为保持类型安全性,必要时插入强制类型转换。

64220

一个关于IntroductionAdvisor的bug

强制换为Developer接口,实际方法调用会被introduction advice拦截,调用请求转发给了advice内部持有的Developer接口实现类 Developer developer...所以我们得到的代理对象实际采用jdk实现动态代理,实现了Spring AOP模块内部相关接口和Developer接口,当我们强制将代理对象转换为People类型时,会抛出类型转换异常。...new ArrayList(); 这会导致DefaultAopProxyFactory选择是采用jdk还是cglib进行动态代理时,错误的选择JDK而非cglib进行动态代理,因此最终得到的代理对象不能强制换为目标对象类型...Stu类型: Exception in thread "main" java.lang.ClassCastException: class com.sun.proxy....我觉得代理对象只是为了在目标对象基础上进行增强,并且代理对象本身需要能够强制换为目标对象本身类型或者其继承的某个接口类型;而在该场景下,代理对象并不能强制换为目标对象类型,这违背了其初衷。

14630

Java数组 强制类型转换

数组的强制类型转换 数组的强制类型转换 数组类型转换的问题为什么会出现在我脑海中? 数组的强制类型转换 最重要的是!!!最开始的时候声明的数组类型!!! 最重要的是!!!...但是,如果一开始就声明为Object数组,那么,即便这个数组中存放的全部是String对象,也是不能换为String数组的!!! 数组类型转换的问题为什么会出现在我脑海中?...ArrayList(Arrays.asList(data)); } } 遇到的问题如下:当调用setData设置好data之后,紧接着getData()将会抛出一个类型转换异常java.lang.ClassCastException...而且这个Object数组为什么不能强转成String数组呢?我自己用String数组转换成Object数组之后,是可以转回String数组的呀,为什么这里就不回去,而且报错了呢??????...虽然我不清楚它做了什么,但是有两点可以确定: 源代码既然在强的时候没有报错,说明该方法的返回的实际对象一定是T子类的数组。而T类型是什么呢?

1.8K40

java中的强迫症患者

购物车 为什么这个关键步骤需要进行强制转换类型?你写上面代码的时候可以试试不强制转会会发生什么。...Exception in thread "main" java.lang.ClassCastException: com.java.lesson14.Present cannot be cast to...com.java.lesson14.Commodity at com.java.lesson14.Shopping2.main(Shopping2.java:24) 这是啥玩意?...这里使用的是List集合,可以按照顺序来判断类型,但是换成了Set不能根据放元素的顺序判断类型,那就是真的不知道要什么类型了。...第二,Shopping3类强制转换的时候,将第二个元素强制换为子类Present,这样打印的时候使用的就是子类PRICE常量。 集合不加泛型是可以的,但是如果元素类型不一致,强迫症犯了浑身难受。

53540

Java泛型深入理解「建议收藏」

String str = (String) stringValues.get(0); //问题2——上述强制转型编译时不会出错,而运行时报异常java.lang.ClassCastException...但当我们运行程序时却会报异常: Exception in thread “mainjava.lang.ClassCastException: java.lang.Integer cannot be...也就是说,编译器把这个方法调用翻译为两条字节码指令: 对原始方法Pair.getValue的调用 将返回的Object类型强制换为Integer 此外,存取一个泛型域时,也要插入强制类型转换。...我们使用了泛型,到头来,还是要自己强,违背了泛型设计的初衷。所以java不允许这么干。...因为当类型擦除后,ArrayList的原始类中的类型变量(T)替换为Object,但Object类型不能存储double值。

76620
领券