cristian3371
27-09-2008, 11:36
Ho un problema non riesco a importare una classe creata da me(chiaramente è pubblica la classe) dall' esterno del package in cui mi trovo.
esempio specifico: ho creato la cartella "c07" dove risiede il file(Music3.java) che dovrebbe ricevere la classe importata, in questa cartella vi è un altra sottodirectory "musi" dove all'interno si trova la classe pubblica da importare(Note.java).
potrebba essere un problema di classpath(il compilatore funziona perfettamente)?
codice Music3.java:
package c07.music3;
import c07.musi.Note;
import java.util.*;
class Instrument {
public void play(Note n){
System.out.println("Instrument.play() " +n);
}// fine metodo play
String what() {
return "Instrument";
}
void adjust() {}
}// fine classe Instrument
class Wind extends Instrument {
void play(Note n){
System.out.println("Wind.play() " +n);
}
String what() {return "Wind"; }
void adjust() {}
}// fine classe Wind
class Percussion extends Instrument {
void play(Note n) {
System.out.println("Percussion.play() " + n);
}
String what() { return "Percussion"; }
void adjust() {}
}// fine classe Percussion
class Stringed extends Instruments {
void play(Note n){
System.out.println("Stringed.play() " + n);
}
String what() { return "Stringed"; }
void adjust() {}
}// fine classe Stringed
class Brass extends Wind {
void play(Note n) {
System.out.println("Brass.play()" + n);
}// fine metodo play
void adjust(){
System.out.println("Brass.adjust()");
}// fine metodo adjust
}// fine classe Brass
class Woodwind extends Wind {
void play(Note n){
System.out.println("Woodwind.play() " + n);
}
String what(){ return "Woodwind"; }
}// fine classe Woodwind
public class Music3 {
// non si preoccupa del tipo, quindi i nuovi tipi
// aggiunti al sistema funzionano corrattamente:
public static void tune(Instrument i){
//..
i.play(Note.MIDDLE_C);
}
public static void tuneAll(Instrument[] e){
for(int i=0; i < e.length;i++)
tune(e[i]);
}
public static void main(String[] args){
//Upcasting durante l'aggiunta all'array
Instrument[] orchestra = {
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
tuneAll(orchestra);
System.out.println(new String[] {
"Wind.play() Middle C",
"Percussion.play() Middle C",
"Stringed.play() Middle C",
"Brass.play() Middle C",
"Woodwind.play() Middle C"
});
} // fine main
} // fine classe Music3
codice Note.java:
package c07.musi;
public class Note {
private String noteName;
private Note(String noteName){
this.noteName = noteName;
}
public String toString() {return noteName; }
public static final Note
MIDDLE_C = new Note("Middle C"),
C_SHARP = new Note("C Sharp"),
B_FLAT = new Note("B Flat");
//Ecc.
}// fine classe Note
grazie:)
esempio specifico: ho creato la cartella "c07" dove risiede il file(Music3.java) che dovrebbe ricevere la classe importata, in questa cartella vi è un altra sottodirectory "musi" dove all'interno si trova la classe pubblica da importare(Note.java).
potrebba essere un problema di classpath(il compilatore funziona perfettamente)?
codice Music3.java:
package c07.music3;
import c07.musi.Note;
import java.util.*;
class Instrument {
public void play(Note n){
System.out.println("Instrument.play() " +n);
}// fine metodo play
String what() {
return "Instrument";
}
void adjust() {}
}// fine classe Instrument
class Wind extends Instrument {
void play(Note n){
System.out.println("Wind.play() " +n);
}
String what() {return "Wind"; }
void adjust() {}
}// fine classe Wind
class Percussion extends Instrument {
void play(Note n) {
System.out.println("Percussion.play() " + n);
}
String what() { return "Percussion"; }
void adjust() {}
}// fine classe Percussion
class Stringed extends Instruments {
void play(Note n){
System.out.println("Stringed.play() " + n);
}
String what() { return "Stringed"; }
void adjust() {}
}// fine classe Stringed
class Brass extends Wind {
void play(Note n) {
System.out.println("Brass.play()" + n);
}// fine metodo play
void adjust(){
System.out.println("Brass.adjust()");
}// fine metodo adjust
}// fine classe Brass
class Woodwind extends Wind {
void play(Note n){
System.out.println("Woodwind.play() " + n);
}
String what(){ return "Woodwind"; }
}// fine classe Woodwind
public class Music3 {
// non si preoccupa del tipo, quindi i nuovi tipi
// aggiunti al sistema funzionano corrattamente:
public static void tune(Instrument i){
//..
i.play(Note.MIDDLE_C);
}
public static void tuneAll(Instrument[] e){
for(int i=0; i < e.length;i++)
tune(e[i]);
}
public static void main(String[] args){
//Upcasting durante l'aggiunta all'array
Instrument[] orchestra = {
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
tuneAll(orchestra);
System.out.println(new String[] {
"Wind.play() Middle C",
"Percussion.play() Middle C",
"Stringed.play() Middle C",
"Brass.play() Middle C",
"Woodwind.play() Middle C"
});
} // fine main
} // fine classe Music3
codice Note.java:
package c07.musi;
public class Note {
private String noteName;
private Note(String noteName){
this.noteName = noteName;
}
public String toString() {return noteName; }
public static final Note
MIDDLE_C = new Note("Middle C"),
C_SHARP = new Note("C Sharp"),
B_FLAT = new Note("B Flat");
//Ecc.
}// fine classe Note
grazie:)