Aide sur les objets en java

flo7554 Messages postés 33 Date d'inscription mercredi 14 janvier 2004 Statut Membre Dernière intervention 28 mai 2004 - 8 mars 2004 à 13:12
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 8 mars 2004 à 14:30
Je suis debutant en java.
J'ai un pb il me met une erreur :
java.lang.NullPointerException
at ApliTemps.arrive(ApliTemps.java:88)
at ApliTemps.main(ApliTemps.java:24)
Exception in thread "main"

Ca veut dire quoi?

Il plante ici :
tmarcheur[j].tps= new Temps(); tmarcheur[j].tps.InitTps(h,m,s);

/*Définition de la classe marcheur*/
static class Marcheur
{
String nom;
String pays;
String numDossard;
Temps tps;
}

Mici :clown)

3 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
8 mars 2004 à 13:42
Salut,

l'erreur NullPointer signifie que tu n'as pas créé l'objet que tu manipules. Dans ton cas je pense que l'objet tmarcheur[j] n'est pas créé. Regarde si tu fais quelque part avant cet appel quelque chose du style: tmarcheur[j] = new Marcheur(); dans une boucle par ex.
De plus je crois pas qu'une classe puisse être static.
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
8 mars 2004 à 14:07
Bien sur qu'une classe peut etre static....
Elle n'est pas instanciable, c'est tout, c'est utile pour faire des classes de methode utiles... comme faire des librairies de fonctions dans un autre langage

pour en revenir a la question, bah meme reponse, soit ton tableau
tmarcheur est null, soit l'objet en j est null, soit ton objet tps est null dans ton objet marcheur...
verifie ces 3 objets...
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
8 mars 2004 à 14:30
je tiens à préciser une chose. Une classe ne peut être static que si elle est définie à l'intérieur d'une autre classe (inner class). Une classe normale ne peut pas être static. De plus une classe interne static est instansiable.
ex:
public class Test{
public static class Interne{
public void test(){
System.out.println("test");
}
}

public void testClass(){
new Interne().test();
}

public static void main(String[] args){
new Test().testClass();
}
}

Pour éviter qu'une classe soit instansiable, je la déclare abstract ou je déclare le constructeur private.

C'est intéressant quand même, je n'avais pas remarqué qu'une inner classe pouvait être static bien que j'ai un peu de mal à en comprendre la signification.
0
Rejoignez-nous