Comment attribuer à un Objet la valeur null ?
Fermé
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
-
25 mars 2014 à 16:21
talbsbast Messages postés 54 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 3 février 2023 - 25 mars 2014 à 19:07
talbsbast Messages postés 54 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 3 février 2023 - 25 mars 2014 à 19:07
A voir également:
- L'objet a peut-être la valeur 'null'
- Vente objet occasion entre particulier - Guide
- Dans la messagerie ci-dessous, envoyez un nouveau message à manon (manon@pixmail.org) en mettant en copie nina (nina@pixmail.org) : objet : colis bonjour, votre colis est arrivé. que répond manon ? ✓ - Forum Loisirs / Divertissements
- Marketplace vendu par null - Forum Facebook
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Null brawl - Forum Jeux vidéo
3 réponses
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 25/03/2014 à 18:29
Modifié par walidovich_85 le 25/03/2014 à 18:29
Bonsoir,
D'abord, vous ne pouvez pas appliquer des méthodes à un objet null. Il faut l'instancier.
Alors, if (this==null) est inutile, car la fonction ne sera pas appelé pour un objet null, le compilateur ne va pas le permettre; et même si vous y arriverez, la JVM va générer NullPointerException à l'exécution (peut être c ça ce que vous voulez dire par "ça bug")
PS:
- la fonction affiche() donne le même résultat quoi que soit la valeur de l'entrée b.
- est que l'ajout d'un attribut boolean "infini" à la classe Point ne va résoudre votre problème?
Bonne chance
Being normal is boring... being geek is interesting
D'abord, vous ne pouvez pas appliquer des méthodes à un objet null. Il faut l'instancier.
Alors, if (this==null) est inutile, car la fonction ne sera pas appelé pour un objet null, le compilateur ne va pas le permettre; et même si vous y arriverez, la JVM va générer NullPointerException à l'exécution (peut être c ça ce que vous voulez dire par "ça bug")
PS:
- la fonction affiche() donne le même résultat quoi que soit la valeur de l'entrée b.
- est que l'ajout d'un attribut boolean "infini" à la classe Point ne va résoudre votre problème?
Bonne chance
Being normal is boring... being geek is interesting
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
25 mars 2014 à 18:32
25 mars 2014 à 18:32
Ce que tu manipules dans tes variables ce ne sont pas directement les objets mais des références aux objets. La valeur null signifie que la variable ne référence aucun objet. Mais quand tu manipules une méthode c'est toujours avec un objet, donc sa référence existe, tu ne peux donc jamais avoir this==null
Tu peux peut être te créer des constantes static de type Point et faire une comparaison des objets avec == (et non pas equals comme d'habitude) afin de savoir si l'objet que tu référence est une de ces constantes.
Tu peux peut être te créer des constantes static de type Point et faire une comparaison des objets avec == (et non pas equals comme d'habitude) afin de savoir si l'objet que tu référence est une de ces constantes.
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
Modifié par KX le 25/03/2014 à 19:05
Modifié par KX le 25/03/2014 à 19:05
Un exemple rapide (avec les 8 cas d'infinis possibles).
Perso j'irais plus loin pour optimiser, mais là c'est déjà un bon point de départ...
public class Point { public static final Point INFINITE_XP = new Point(Long.MAX_VALUE, 0); public static final Point INFINITE_XP_YP = new Point(Long.MAX_VALUE, Long.MAX_VALUE); public static final Point INFINITE_XP_YN = new Point(Long.MAX_VALUE, Long.MIN_VALUE); public static final Point INFINITE_XN = new Point(Long.MIN_VALUE, 0); public static final Point INFINITE_XN_YP = new Point(Long.MIN_VALUE, Long.MAX_VALUE); public static final Point INFINITE_XN_YN = new Point(Long.MIN_VALUE, Long.MIN_VALUE); public static final Point INFINITE_YP = new Point(Long.MAX_VALUE, 0); public static final Point INFINITE_YP_XP = INFINITE_XP_YP; public static final Point INFINITE_YP_XN = INFINITE_XN_YP; public static final Point INFINITE_YN = new Point(Long.MIN_VALUE, 0); public static final Point INFINITE_YN_XP = INFINITE_XP_YN; public static final Point INFINITE_YN_XN = INFINITE_XN_YN; public static boolean isXPositiveInfinite(Point point) { return point == INFINITE_XP || point == INFINITE_XP_YP || point == INFINITE_XP_YN; } public static boolean isXNegativeInfinite(Point point) { return point == INFINITE_XN || point == INFINITE_XN_YP || point == INFINITE_XN_YN; } public static boolean isYPositiveInfinite(Point point) { return point == INFINITE_YP || point == INFINITE_YP_XP || point == INFINITE_YP_XN; } public static boolean isYNegativeInfinite(Point point) { return point == INFINITE_YN || point == INFINITE_YN_XP || point == INFINITE_YN_XN; } public static boolean isXInfinite(Point point) { return isXPositiveInfinite(point) || isXNegativeInfinite(point); } public static boolean isYInfinite(Point point) { return isYPositiveInfinite(point) || isYNegativeInfinite(point); } public static boolean isInfinite(Point point) { return isXInfinite(point) || isYInfinite(point); } public final long x; public final long y; public Point(long a, long b) { x = a; y = b; } public void affiche(boolean println) { if (println) System.out.println(this); else System.out.print(this + " "); } @Override public String toString() { if (isInfinite(this)) return "Infini"; else return String.format("(%d, %d)", x, y); } }
Perso j'irais plus loin pour optimiser, mais là c'est déjà un bon point de départ...
talbsbast
Messages postés
54
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
3 février 2023
1
25 mars 2014 à 19:07
25 mars 2014 à 19:07
walidovich_85
Merci pour votre réponse, Le boolean b c'est juste pour faire un retour à la ligne après l'affichage ou pas.
KX
Merci encore une fois pour votre aide :) j'ai créé une méthode static et ça a résolu mon problème.
Merci pour votre réponse, Le boolean b c'est juste pour faire un retour à la ligne après l'affichage ou pas.
KX
Merci encore une fois pour votre aide :) j'ai créé une méthode static et ça a résolu mon problème.