Comment connaissez-vous un type de variable en java?
Disons que je déclare une variable:
String a = "test";
Et je veux savoir de quel type il est, c'est à dire, la sortie doit être java.lang.String
Comment puis-je faire cela?
- Vous êtes vraiment intéressé par le type de la variable? Ou avez-vous des soins sur le type de la valeur? Parce que le type de la variable ne peut pas être facilement obtenues (en fait, il n'est pas possible à tous pour les variables locales et de réflexion pour les champs).
- quelle est exactement la différence entre le "type de la variable" et "type de la valeur"?
- Envisager
Object o = "o";
- le type de la variable est l'Objet, le type de la valeur est une Chaîne. - Dans
List<String> l = new ArrayList<String>();
, le type de la variable estList<String>
, le type de la valeur estArrayList<String>
. - Des dépôts Le type de variable est de java.util.Liste de tableaux et le type de valeur est de java.util.Liste de tableaux.
- c'est la différence entre le moment de la compilation (statique) le type et le moment de l'exécution (dynamique) de type.
Vous devez vous connecter pour publier un commentaire.
a
est assez évident au moment de la compilationint
valeur est dans unint
variable, il n'y a aucune manière d'écrire du code qui gère unint
valeur et ne pas savoir que type. La question est différente dans le cas où vous êtes la manipulation d'un wrapper commeInteger
, mais alors le code de cette réponse fonctionne à nouveau.Si vous souhaitez que le nom, l'utilisation Martin de la méthode. Si vous voulez savoir si c'est une instance d'une certaine classe:
boolean b = a instanceof String
J'ai appris à partir du Moteur de Recherche(Mon anglais est très mauvais , Donc le code...)
Comment obtenir le type de la variable?
Up :
cette méthode :
maintenant exemple:
Je voudrais élargir sur Martin réponse...
Sa solution, c'est plutôt agréable, mais il peut être modifié de sorte que toute variable "type" peut être imprimé comme ça.(C'est en fait le Type de Valeur, plus sur le sujet). Cela dit, "tordu" peut être un mot fort pour cela. Peu importe, il peut être utile.
Sa solution était:
Si vous voulez qu'il fonctionne avec tout ce que vous pouvez faire ceci:
Dans ce cas, la primitive sera simplement enveloppé dans du papier d'emballage. Vous obtiendrez l'Objet de la primitive dans ce cas.
J'ai moi-même utilisé comme ceci:
L'Utilisation De Génériques:
Je suis d'accord avec ce que Joachim Sauer dit, pas possible de connaître le type de variable! pas de type de valeur!) sauf si votre variable est un attribut de classe (et vous devez récupérer les champs de la classe, obtenir le droit de champ par son nom...)
En fait pour moi c'est totalement impossible que tout
a.xxx().yyy()
méthode vous donner la bonne réponse étant donné que la réponse serait différente sur le même objet, selon le contexte dans lequel vous appelez cette méthode...Comme teehoo dit, si vous savez lors de la compilation d'une liste définie de types de test, vous pouvez utiliser instanceof, mais vous obtiendrez également les sous-classes de retourner true...
Une solution possible serait aussi que l'on inspirez-vous de la mise en œuvre de
java.lang.reflect.Field
et de créer votre propreField
classe, puis de déclarer toutes tes variables locales que cette coutumeField
mise en œuvre... mais vous feriez mieux de trouver une autre solution, je me demande vraiment pourquoi vous avez besoin le type de variable, et pas seulement le type de la valeur?Utiliser la surcharge d'opérateur fonctionnalité de java
Je pense que nous avons de multiples solutions ici:
Pourquoi?
En Java, chaque classe est héritée de la classe de l'Objet lui-même. Donc, si vous avez une variable et vous souhaitez connaître son type. Vous pouvez utiliser
ou
ou
isPrimitive()
Cela va nous donner:
Savoir plus, cliquez ici:
Comment faire pour déterminer le type primitif primitif d'un variable?
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
http://docs.oracle.com/cd/E26806_01/wlp.1034/e14255/com/bea/p13n/expression/operator/Instanceof.html