java中的Enum强制转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的Enum强制转换相关的知识,希望对你有一定的参考价值。
定义了一个接口为
public interface Type
然后定义一个Enum类型实现了这个接口
public enum DetailType implements Type
RED,BLUE,BLACK,YELLO
在程序中,将一个object类型强制转换为Type类型
Type a = (Type)Object;
为什么每次都会抛出这样的错误:java.lang.ClassCastException: java.lang.String cannot be cast to Type
即使我改成了DetailType也是一样的错误,有没有人遇到过这样的错误
其实,enum 不需要接口定义 参考技术B 人才,枚举实现接口....追问
人不人才的,先上答案吧。如果是单纯的枚举类型,别管那个接口
关于java中的short和int类型转换的问题
public static void main(String[] args)
/**
* += 会把后面的数值自动强制转换为前面的类型,然后在那块内存上直接修改数值;
* = 是会在把后面的数值赋值到前面的变量时检测类型是否相同( 非自动强制转换!)如果是高精度到低精度的,需要报错,告诉程序员会loss of data
*/
short w = 0;
short s = 0;
int i = 32768;//1000 0000 0000 0000
int j = 32767;// 111 1111 1111 1111
System.out.println("the i");
s += i;
w = (short) (w + i);
System.out.println(i);//32768
System.out.println(s);//-32768
System.out.println(w); //-32768
System.out.println("the j");
s += j;
w = (short) (w + j);
System.out.println(j);//32767
System.out.println(s);//-1
System.out.println(w);//-1
这些“//”后面的是输出的结果,我没看明白这些转换是怎么运行的,求大神指点。。。
java中的short和int类型转换,当将一个数值范围小的类型赋给一个数值范围大的数值型变量,jvm在编译过程中俊将此数值的类型进行了自动提升。实例如下:
参考技术A 这些数字在内存中都是 以补码形式保存的。其中int类型为32位
short类型为16位
在int向short转换时 会发生溢出。
要想看懂 就把他们的二进制形式写出来就好了~追问
我听说short有一位是存放符号的,也就是说short只有十五位二进制字符来存放数值。
32767的数值 转化为short不会发生溢出的
i= 32767;// 111 1111 1111 1111
short j=0;//0
j+=i;//0+= 111 1111 1111 1111
j;// 111 1111 1111 1111 输出的应该是32767?而实际输出的是-1?
以上是关于java中的Enum强制转换的主要内容,如果未能解决你的问题,请参考以下文章