La conversion d'Entier Long
J'ai besoin d'obtenir la valeur d'un champ à l'aide de la réflexion. Il se trouve que je ne suis pas toujours sûr de ce que le type de données du champ. Pour cela, et afin d'éviter certains duplication de code, j'ai créé la méthode suivante:
@SuppressWarnings("unchecked")
private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable {
Field f = classUnderTest.getDeclaredField(processFieldName(var));
f.setAccessible(true);
T value = (T) f.get(runtimeInstance);
return value;
}
Et d'utiliser cette méthode comme:
Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance);
ou
Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance);
Le problème est que je n'arrive pas à lancer Integer
à Long
:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Est-il un meilleur moyen pour y parvenir?
J'utilise la version 1.6 de Java.
Vous devez vous connecter pour publier un commentaire.
Non, vous ne pouvez pas jeter
Integer
àLong
, même si vous pouvez convertirint
àlong
. Pour un personne valeur qui est connu pour être un certain nombre et vous souhaitez obtenir le long de la valeur, vous pouvez utiliser:Pour les tableaux, c'est plus délicat...
Number[]
et une boucle pour créer une façon appropriée tableau typé, droit?double[]
par exemple, mais aurait de travail pour unDouble[]
.Number
. Ou pour le dire d'une autre façon: qui règle de conversion croyez-vous t vous permettent de convertir de l'un à l'autre?Simplement:
int
valeurs.Integer
àint
et jette alors àlong
avant de passer à la désormais obsolèteLong(long)
constructeur.Cela permet d'éviter la dégradation des performances de la conversion en Chaîne de caractères. Le
longValue()
méthode en Entier est juste une distribution de la valeur int. LeLong.valueOf()
méthode donne de la vm une chance d'utiliser une valeur mise en cache.Bizarrement j'ai trouvé que si vous analyser à partir d'une chaîne, il fonctionne.
Gagner.
De convertir un entier directement à la longue par l'ajout de " L " à la fin de l'Entier.
La conversion d'Entier Long Très Simple et de nombreuses façons de conversion qui
Exemple 1
Exemple 2
Exemple 3
Exemple 4
Si vous avez déjà l'int tapé comme un Entier vous pouvez le faire:
Si l'Entier n'est pas null
i
sera automatiquement catalogués à unlong
.À l'aide de
valueOf
au lieu denew
permet la mise en cache de cette valeur (si son petites) par le compilateur ou de la JVM , ce qui accélère le code.Si vous savez que l'Entier n'est pas NULL, vous pouvez simplement faire ceci:
ou
Un analyseur de
int
variables à lalong
type est inclus dans leInteger
classe. Voici un exemple:Vous pouvez facilement utiliser ce construit de fonction pour créer une méthode d'analyse de
int
àlong
:C'est null-safe
Dans le cas d'une Liste de type Long, l'Ajout de L à la fin de chaque valeur entière