Java pour vérifier si une variable a été initialisée
J'ai besoin d'utiliser quelque chose de similaire à php isset fonction. Je sais que php et java sont EXTRÊMEMENT différents, mais php est ma seule base des connaissances antérieures sur quelque chose de similaire à la programmation. Est-il une sorte de méthode qui retourne un booléen pour savoir si ou non une variable d'instance avait été initialisé ou non. Par exemple...
if(box.isset()) {
box.removeFromCanvas();
}
Jusqu'à présent, j'ai eu ce problème lorsque j'obtiens une erreur d'exécution lorsque mon programme est en train d'essayer de masquer ou de supprimer un objet qui n'a pas été encore construit.
- Vous devriez laissez-nous savoir ce que l'erreur d'exécution est. Est-il une exception NullPointerException?
- Pourquoi ne peut-on pas définir une méthode dans la classe de boîte appelée
isset()
qui est qui? - cette réponse ne fait pas d'adresse de votre question. Il s'agit de la confusion de ce que variable, un objet et champ sont.
- que nécro... Si vous avez une meilleure réponse, puis aller pour elle. La réponse était suffisante pour ce que je faisais il y a 5 ans.
Vous devez vous connecter pour publier un commentaire.
En supposant que vous êtes intéressé à savoir si la variable a été explicitement affecté une valeur ou pas, la réponse est "pas vraiment". Il n'y a absolument aucune différence entre un champ d'une variable d'instance ou de classe variable) qui n'a pas été explicitement assigné à tous les encore, et celui qui a été assigné à sa valeur par défaut est 0, false, null, etc.
Maintenant si vous savez qu'une fois attribué, la valeur ne sera jamais réattribué une valeur null, vous pouvez utiliser:
(et qui permet également d'éviter un possible
NullPointerException
), mais vous devez être conscient du fait que "un champ avec une valeur null n'est pas la même comme "un champ qui n'a pas été explicitement attribué une valeur". La valeur Null est parfaitement valide valeur de la variable (pour les non-primitive variables, bien sûr). En effet, vous pouvez même changer le code ci-dessus pour:La différence est également visible pour les variables locales, qui ne peuvent pas être lus avant qu'ils ont été "définitivement attribué" - mais l'une des valeurs auxquelles ils peuvent être définitivement attribué est null (pour référence les variables de type):
Class.getDeclaredFields
avec l'API reflection (qui que le doc est de décrire) vous ne pouvez pas obtenir les valeurs pour les méthodes ou les types imbriqués.null
pour lutter efficacement contre la mauvaise idée que la vérification de la valeur null est vérifier si la variable a été initialisée. Rien de ce que vous avez dit des points à toute déclaration inexacte de ma réponse ou des commentaires, aussi loin que je peux voir.Variables d'Instance ou dans les champs, le long avec des variables statiques, sont attribuées des valeurs par défaut basé sur le type de variable:
0
\u0000
ou0
0.0
false
null
Veux juste préciser que les variables locales (ie. déclarée dans le bloc, par exemple. la méthode, pour la boucle, en boucle, try-catch, etc.) ne sont pas initialisés à des valeurs par défaut et doit être explicitement initialisée.