在项目中遇到java.lang.Integer cannot be cast to java.lang.String

问题根源是枚举类上定义的属性为类型如下图
在项目中遇到java.lang.Integer cannot be cast to java.lang.String_第1张图片
但是在用ImmutableMap把枚举类的属性组装进去时,注意我这里的ImmutableMap里面泛型结构为,如下图
在项目中遇到java.lang.Integer cannot be cast to java.lang.String_第2张图片
问题就出现在这里(箭头部分是修改之后的就是问题出现之后改的,原先并没有用toString的,加了toString自后才解决该问题的)
在项目中遇到java.lang.Integer cannot be cast to java.lang.String_第3张图片
没有将Integer转换成String直接装入builder对象当中,导致后面(如下图)报错
在项目中遇到java.lang.Integer cannot be cast to java.lang.String_第4张图片

总结

如下图红色部分,该对象引用的结构类型里面的属性其实在IDEA看来就是泛型,他可以填充任何对象IDEA不会报错的,所以总结如下

  • 遇到没有显示声明类型的泛型装载体,在塞值得时候一定要考虑泛型实际上对应的类别,不然后面使用的时候会报错。
  • 报错触发点:虽然拿的时候不会报错,但是将值转换的时候会报错,比如我在拿的时候将String强制转换成Integer,或者拿的时候先用ToString转String之后再转Integer,其中转Integer用了new Integer, Integer.getInteger等API还是会报标题中的错误!

在项目中遇到java.lang.Integer cannot be cast to java.lang.String_第5张图片

你可能感兴趣的:(java,exception)