Lorsque vous utilisez ce code avec DatasterService, je reçois la classeCastException Long ACNNOT SOIT ÊTRE COULER EN INTEGER EN ADÉENTIENCE. Est-ce un comportement normal? (Je reçois ce comportement lors du débogage sur l'ordinateur local avec le plug-in Google pour Eclipse)
try { ret._integerval = (Integer)ent.getProperty("property1"); } catch( ClassCastException ex ) { Long val = (Long)ent.getProperty("property1"); ret._integerval = val.intValue(); }
5 Réponses :
Utilisez int code> au lieu de
entier code> en cas de coulée.
ret._integerval = (int)ent.getProperty("property1");
Le même. Obtenez JAVA.LANG.CLASSCASTEXCEPTION: Java.Lang.Long ne peut pas être jeté à Java.lang.Integer.
Créer un nouveau entier:
Integer property = new Integer(entity.getProperty("propertyKey").toString());
Les valeurs entières sont sauvegardées aussi longtemps, le moteur d'application reviendra toujours longtemps, j'ai été confondu moi-même mais j'ai vu Ceci P>
Si vous souhaitez utiliser int code> dans votre programme, cela fonctionne correctement:
int i = (int) (long) entity.getProperty(propertyName);
Comme indiqué dans le Documentation officielle
Comme la valeur est stockée dans le magasin de données, elle est convertie en Le type natif de DataSore. Cela peut inclure l'élargissement, tel que la conversion un court à long. p> blockQuote>
SO P>
- définit comme int mais jeté longuement car pour une raison quelconque, le comportement de magasin de données dans l'environnement local est différent et qu'il stocke également entier. li>
Obtenez la longue et utilisez .IntValue () P>
public int get() { return ((Long) entity.getProperty(FIELD)).intValue(); } public void set(int value) { entity.setProperty(FIELD, (long)value); }