PDA

Visualizza la versione completa : [java] classe libro non funzionante help!


Lucked
06-07-2004, 00:49
sapete dirmi cosa non va? in fase di esecuzione il compilatore mi dice: nullpointerexception :messner:

class Capitolo{
public String nome;
public String[] paragrafi;
}


class Libro{
public Capitolo uno;
Capitolo due;
Capitolo tre;
}


class ProvaLibro{
public static void main(String[] args){

Libro l = new Libro();

l.uno.nome = "Luca";

System.out.println(l.uno.nome);

}

}

Lucked
06-07-2004, 01:04
ovviamente cosi funziona ma io non volevo passare per i costruttori, e neanche farli visto che java si crea da solo delle inixialixxaxioni a 0.


class Capitolo{
String nome;
String[] paragrafi;

Capitolo(String nome, String[] par){
this.nome = nome;
paragrafi = par;
}

}


class Libro{
Capitolo uno;
Capitolo due;
Capitolo tre;

Libro(Capitolo uno, Capitolo due, Capitolo tre){
this.uno = uno;
this.due = due;
this.tre = tre;
}

void setCapitoloNome(String nome){
Capitolo c = new Capitolo(nome, null);

uno = c;
}

}


class ProvaLibro{
public static void main(String[] args){

Libro l = new Libro(null,null,null);

// l.uno.nome = "Luca";

l.setCapitoloNome("Luca");
System.out.println(l.uno.nome);

}

}

Ed_Bunker
06-07-2004, 02:06
Originariamente inviato da Lucked
sapete dirmi cosa non va? in fase di esecuzione il compilatore mi dice: nullpointerexception :messner:

class Capitolo{
public String nome;
public String[] paragrafi;
}


class Libro{
public Capitolo uno;
Capitolo due;
Capitolo tre;
}


class ProvaLibro{
public static void main(String[] args){

Libro l = new Libro();

l.uno.nome = "Luca";

System.out.println(l.uno.nome);

}

}

Ti da errore per il semplice fatto che l.uno non e' inizializzato. Ovvero non esiste nell'heap nessun oggetto corrispondente alla variabile l.uno. Prima devi fare l.uno = new Capitolo() e poi allora puoi fare l.uno.nome = "OliverHattonStory" :) :D :) :D

Le inizializzazioni vengono fatte mediante i costruttori. In Java i costruttori sono spesso "basilari". Non vengono usati "soltanto" nel caso in cui si voglia realizzare un tipo di dato astratto corrispondente ad un record puro le cui variabili vengano inizializzate esplicitamente e i cui valori (Delle variabili) siano accessibili direttamente (Non tramite metodi osservatori).

Loading