Je n'arrête pas de trouver ici et sur Google des gens qui ont des problèmes pour passer de long
à int
et non l'inverse. Pourtant, je suis sûr que je ne suis pas le seul à avoir connu ce scénario avant de passer de int
à Long
.
Les seules autres réponses que j'ai trouvées sont "Il suffit de le définir comme long en premier lieu", ce qui ne répond vraiment pas à la question.
Quelqu'un peut m'aider ici? J'ai d'abord essayé le casting mais j'ai un "Cannot cast from int to Long
"
for (int i = 0; i < myArrayList.size(); ++i ) {
content = new Content();
content.setDescription(myArrayList.get(i));
content.setSequence((Long) i);
session.save(content);
}
Comme vous pouvez l'imaginer, je suis un peu perplexe. Je suis bloquée avec int, du contenu entrant sous forme de liste de tableaux et l'entité pour laquelle je stocke cette information requiert le numéro de séquence en tant que long.
Merci!
Notez qu'il existe une différence entre un attribut à long
et un attribut à Long
. Si vous transformez en long
(une valeur primitive), elle doit automatiquement être encadrée en Long
(le type de référence qui l'encapsule).
Vous pouvez également utiliser new
pour créer une instance de Long
, en l'initialisant avec la valeur int
.
Utilisez les éléments suivants: Long.valueOf(int);
.
Si vous avez déjà saisi l'entier en tant qu'entier, vous pouvez le faire:
Integer y = 1;
long x = y.longValue();
utilisation
new Long(your_integer);
ou
Long.valueOf(your_integer);
J'ai ce petit jouet, qui traite également des interfaces non génériques . Je suis d'accord pour le lancer d'une exception ClassCastException si l'alimentation est incorrecte (OK et heureux)
public class TypeUtil {
public static long castToLong(Object o) {
Number n = (Number) o;
return n.longValue();
}
}
En Java, vous pouvez faire:
int myInt=4;
Long myLong= new Long(myInt);
dans votre cas ce serait:
content.setSequence(new Long(i));
Que diriez-vous
int myInt = 88;
// ne compile pas
Long myLong = myInt;
// Compile et conserve l'esprit non-NULL de int. Le meilleur casting est pas de casting du tout . Bien entendu, votre cas d'utilisation peut nécessiter des valeurs NULL longues et possibles. Mais si int, ou autres longs sont votre seule entrée, et que votre méthode peut être modifiée, je suggérerais cette approche.
long myLong = myInt;
// Compile, est le moyen le plus efficace et indique clairement que la valeur source est et ne sera jamais NULL.
Long myLong = (long) myInt;
1,new Long(intValue);
2,Long.valueOf(intValue);
Nous allons obtenir la valeur longue en utilisant la référence Number
.
public static long toLong(Number number){
return number.longValue();
}
Cela fonctionne pour tous les types de nombres, voici un test:
public static void testToLong() throws Exception {
assertEquals(0l, toLong(0)); // an int
assertEquals(0l, toLong((short)0)); // a short
assertEquals(0l, toLong(0l)); // a long
assertEquals(0l, toLong((long) 0)); // another long
assertEquals(0l, toLong(0.0f)); // a float
assertEquals(0l, toLong(0.0)); // a double
}
//Suppose you have int and you wan to convert it to Long
int i=78;
//convert to Long
Long l=Long.valueOf(i)
J'ai eu beaucoup de difficulté avec cela. Je voulais juste:
thisBill.IntervalCount = jPaidCountSpinner.getValue();
Où IntervalCount est un long, et le JSpinner était réglé pour retourner un long. Finalement, j'ai dû écrire cette fonction:
public static final Long getLong(Object obj) throws IllegalArgumentException {
Long rv;
if((obj.getClass() == Integer.class) || (obj.getClass() == Long.class) || (obj.getClass() == Double.class)) {
rv = Long.parseLong(obj.toString());
}
else if((obj.getClass() == int.class) || (obj.getClass() == long.class) || (obj.getClass() == double.class)) {
rv = (Long) obj;
}
else if(obj.getClass() == String.class) {
rv = Long.parseLong(obj.toString());
}
else {
throw new IllegalArgumentException("getLong: type " + obj.getClass() + " = \"" + obj.toString() + "\" unaccounted for");
}
return rv;
}
ce qui semble faire l'affaire. Aucune quantité de casting simple, aucune des solutions ci-dessus n'a fonctionné pour moi. Très frustrant.
Dès qu'il n'y a plus que la méthode Long.valueOf(long)
, la conversion de int
à long
sera effectuée implicitement si Long.valueOf(intValue)
est utilisé.
Le moyen le plus clair de le faire est
Integer.valueOf(intValue).longValue()