gpt4 book ai didi

java - 使用 int 调用 setProperty 但 getProperty 返回 Long on google app engine persistent storage

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:48 25 4
gpt4 key购买 nike

当将此代码与 DatastoreService 一起使用时,我得到 ClassCastException Long acnnot be cast to integer in fromEntity。这是正常行为吗? (我在使用 eclipse 的 google 插件在本地计算机上调试时出现此行为)

class UserData {
private int _integerval = 0;
private String _stringval = "";
public Entity getEntity() {
Entity ret = new Entity( "User", key );
ret.setProperty( "property1", _integerval );
ret.setProperty( "property2", _stringval );
return ret;
}

public static UserData fromEntity( Entity ent ) {
UserData ret = new UserData();
ret._integerval = (Integer)ent.getProperty("property1");
ret._stringval = (String)ent.getProperty("property2");
return ret;
}
}

我是否总是必须像这样捕获这个异常:

try
{
ret._integerval = (Integer)ent.getProperty("property1");
}
catch( ClassCastException ex ) {
Long val = (Long)ent.getProperty("property1");
ret._integerval = val.intValue();
}

或者也许所有的数值都只存储了 long ?我是否必须将 _integerval 类型更改为 long 以避免此异常?

最佳答案

在转换时使用 int 而不是 Integer

ret._integerval = (int)ent.getProperty("property1");

编辑:

以下内容包含在 setProperty 中API。

As the value is stored in the datastore, it is converted to the datastore's native type. This may include widening, such as converting a Short to a Long.

因此,您的 int 数据正在转换为数据存储的 native 类型,如 Long。使用 longLong 进行转换。

关于java - 使用 int 调用 setProperty 但 getProperty 返回 Long on google app engine persistent storage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15246265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com