在我的项目中,我有这样一个枚举:
public enum MyEnum {
FIRST(1),
SECOND(2);
private int value;
private MyEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public static MyEnum fromValue(int value) {
for (MyEnum e : MyEnum.values()) {
if (e.getValue() == value) {
return e;
}
}
return null;
}
我有这个代码:
Map<String, Object> myMap = new HashMap<>();
// Fill my Map with data from database
myMap = namedParameterJdbcTemplate.queryForList(qry, paramsMap);
***if (Arrays.asList(MyEnum.values())
.contains(MyEnum.fromValue((int)
myMap.get("myKey")) )))*** {
// Do something
}
我有个例外
java.lang.ClassCastException: java.lang.Short cannot be cast to java.lang.Integer** on this line : **if (Arrays.asList(MyEnum.values())
.contains(MyEnum.fromValue((int)myMap.get("myKey")) )))
myMap由数据库中的数据填充,知道它是SQL Server数据库,并且从数据库返回的myKey在数据库中是tinyint类型。
你能告诉我我做错了什么吗?谢谢
当做
在这里:
(int)myMap.get("myKey")
我猜get方法返回了对Short对象的引用,该对象不能转换为Integer,因为Short不继承Integer。
您可以做的是将其转换为Short,然后调用intValue方法,如下所示:
((Short)myMap.get("myKey")).intValue()
它将返回一个整数值
试试这个。
(int)(short)myMap.get("myKey")
java.lang.类异常:java.lang.不能转换为java.lang.整数
这里myMap。get(“myKey”)
返回一个Short
实例,但是返回的声明对象是object
,因为映射是声明的map
就好像你写了:
Object myValue = myMap.get("myKey")
然后将声明为
对象的
Short
对象传递给MyEnum。fromValue()
,其参数为int
MyEnum.fromValue((int)myValue));
编译器尝试将对象转换为整数。但它不是整数,而是短代码。
要解决问题,您应该首先检查对象的实例。
如果对象不是短期
的实例,您应该抛出异常或忽略该值。
如果是,您应该从Object
到
短
,并将此短
传递到fromValue()
,该将自动被解压为
短
:
Object myValue = myMap.get("myKey");
if (!(myValue instanceof Short)){
throw new YourRuntimeException("A Short is expected but get a " + myValue.getClass());
// or ignore the value
}
if (Arrays.asList(MyEnum.values())
.contains(MyEnum.fromValue(((short) myValue)) {
....
}
我得到java.lang.NoSuch方法例外请帮助我在这... 这就是我得到的错误- 错误:java.lang.运行时异常:java.lang.NoSuchmethod异常:com.nielsen.GRFE.processor.mapreduce.占位符$PlaceholderMapper.()在org.apache.hadoop.util.Reflse Utils.new实例(Reflse U
当我运行这个程序时,我得到了这个错误。我不知道怎么解决。请帮我找到它。 代码:
当我想返回查询结果并放入列表时,我得到错误"java.lang.ClassCastException: classjava.lang.Long不能转换为类java.lang.整数(java.lang.Long和java.lang.整数在加载器'bootstrap'的模块java.base)"。我试图更改类型值,但错误没有消失。
我有以下文件。我需要用下面的集合与requestParam系统匹配,如果requestParam与电子邮件系统匹配,则需要获得结果值。上下快速移动系统 这里请求Param是系统 我已经尝试了下面的语法,得到了java.lang.ClassCastExctive:com.mongodb.client.internal.Aggregate IterableImpl不能转换为java.util.Arra
错误 组织。springframework。果心转换ConverterNotFoundException:未找到能够从[java.lang.Integer]类型转换为[@org.springframework.data.jpa.repository.Query com.entity.CombHoldingRule]类型的转换器 实体类如下所示 存储库:-
我已经创建getByBusinessDeviceID()方法和返回观察,但我想投观察列表。 公共观察getByBusinessDeviceID(整数id){Criteria cr=get会话(). createCriteria(Observation.class);cr.add(Restrictions.eq("business_device_id", id));cr.add(Order.desc