web-dev-qa-db-fra.com

Comment convertir une int en longue en Java?

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!

192
Ghosty

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.

223
Daniel Earwicker

Utilisez les éléments suivants: Long.valueOf(int); .

173
serg

Si vous avez déjà saisi l'entier en tant qu'entier, vous pouvez le faire:

Integer y = 1;
long x = y.longValue();
14
saret

utilisation 

new Long(your_integer);

ou

Long.valueOf(your_integer);
10
User User

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();
    }
}
5
Maxim Veksler

En Java, vous pouvez faire:

 int myInt=4;
 Long myLong= new Long(myInt);

dans votre cas ce serait: 

content.setSequence(new Long(i));
4
daniele

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;
2
Steven Spungin
 1,new Long(intValue);
 2,Long.valueOf(intValue);
2
Vicky

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

}
2
Thamme Gowda
 //Suppose you have int and you wan to convert it to Long
 int i=78;
 //convert to Long
 Long l=Long.valueOf(i)
1
Virendra Singh

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.

1
MaskedCoder

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()
0
Стас Цепа