J'ai une ArrayList composée de différents éléments importés d'une base de données, composée de chaînes, de nombres, de doubles et d'entiers. Existe-t-il un moyen d'utiliser une technique de type réflexion pour savoir ce que chaque type de données contient chaque élément?
FYI: La raison pour laquelle il y a tant de types de données est qu'il s'agit d'un morceau de code java en cours d'écriture pour être implémenté avec différentes bases de données.
java
generics
reflection
arraylist
WolfmanDragon
la source
la source
instanceof
dans le cas de java?(int) o
ne fonctionne pas en Java. Il produit le message d'erreurCannot cast from Object to int
. Utilisez(Integer o).intValue()
plutôt.Vous pouvez utiliser la
getClass()
méthode ou vous pouvez utiliser instanceof. Par exempleou
Notez que instanceof correspondra aux sous-classes. Par exemple, of
C
est une sous-classe deA
, alors ce qui suit sera vrai:Cependant, ce qui suit sera faux:
la source
la source
Vous ne voulez presque jamais utiliser quelque chose comme:
car vous ne tenez pas compte des sous-classes possibles. Vous voulez vraiment utiliser la classe # isAssignableFrom:
la source
En Java, utilisez simplement l'opérateur instanceof. Cela prendra également en charge les sous-classes.
la source
la source
Appelez simplement
.getClass()
chacunObject
dans une boucle.Malheureusement, Java n'a pas
map()
. :)la source
Instanceof fonctionne si vous ne dépendez pas de classes spécifiques, mais gardez également à l'esprit que vous pouvez avoir des valeurs nulles dans la liste, donc obj.getClass () échouera, mais instanceof retourne toujours false sur null.
la source
Depuis Java 8
la source
au lieu d'utiliser,
object.getClass().getName()
vous pouvez l'utiliserobject.getClass().getSimpleName()
, car il renvoie un nom de classe simple sans nom de package inclus.par exemple,
donne,
la source
Vous dites "c'est un morceau de code java en cours d'écriture", d'où j'en déduis qu'il y a encore une chance que vous puissiez le concevoir d'une manière différente.
Avoir une ArrayList, c'est comme avoir une collection de choses. Plutôt que de forcer instanceof ou getClass chaque fois que vous prenez un objet de la liste, pourquoi ne pas concevoir le système de sorte que vous obteniez le type de l'objet lorsque vous le récupérez à partir de la base de données et le stockez dans une collection du type approprié de objet?
Ou, vous pouvez utiliser l'une des nombreuses bibliothèques d'accès aux données existantes pour le faire à votre place.
la source
Si vous vous attendez à ce que les données soient numériques sous une forme quelconque et que tout ce que vous souhaitez faire est de convertir le résultat en une valeur numérique, je suggère:
la source