andbin ha scritto:
maracaibo25 ha scritto:
mi puoi aiutare con questo codice?
Diverse cose le ho già dette io prima sul perché non può compilare.
Adesso l'ho guardato meglio e noto che Pippo racchiude tutto quanto. Quindi, Exportable è una nested interface, Tool/ReportTool sono delle inner class. E questo vuol dire, per dirne una, che un metodo static (il main!) NON lo puoi mettere in una inner class (idem il callExport).
Quindi scusa, il tuo dubbio quale è?
Scusa Andbin....per capire. c'è differenza tra nested e inner? (nidificata - interna)? o sono terminiche si usano solo per convenzione. teoricamente dovrebbe essere la stessa cosa.
inoltre il codice (modificato e indentato)
public class Pippo {
interface Exportable {
void export();
}
class Tool implements Exportable {
-------->>>>>> cannot reduce the visibility of the inherited method from Pippo.Exportable
changhe method visibility to public <<<<<-------- =======>>>>>> che significa esattamente? <<<<<=========
protected void export () {
System.out.println("Tool::export");
}
}
class ReportTool extends Tool implements Exportable {
public void export() {
System.out.println("RTool::export");
}
------>>>>>the method main cannot be declared static; static methods can only be declared in a static or topo level type<<<<<<------ e qua ci siamo!!!
public static void main (String [] args) {
Tool aTool = new ReportTool();
Tool bTool = new Tool();
callExport(aTool);
callExport(bTool);
}
public static void callExport (Exportable ex) {
ex.export();
}
}
}
modificando il programma in due classi, una Pippo e l'atra Tester, ho comunque errori:
public class Pippo {
interface Exportable {
void export();
}
class Tool implements Exportable {
public void export () { <<<---- ho dovuto cambiare in public *****************
System.out.println("Tool::export");
}
}
class ReportTool extends Tool implements Exportable {
public void export() {
System.out.println("RTool::export");
}
}
}
import prj2.Pippo.Exportable;
import prj2.Pippo.ReportTool;
import prj2.Pippo.Tool;
public class Tester {
public static void main (String [] args) {
Tool aTool = new ReportTool(); <<<----- qui ho un errore che non capisco il significato *
Tool bTool = new Tool();
callExport(aTool);
callExport(bTool);
}
public static void callExport (Exportable ex) {
ex.export();
}
}
*
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Pippo is accessible. Must qualify the allocation with an enclosing instance of type Pippo (e.g. x.new A() where x is an instance of Pippo).
at prj2.Tester.main(Tester.java:9)
PS: l'import :
import prj2.Pippo.Exportable;
import prj2.Pippo.ReportTool;
import prj2.Pippo.Tool;
l'ha fatto Eclipse da solo. e non capisco! pensavo si potessero importare solo le librerie..... ma quindi la libreria java.util.* non è altro che una classe enorme ?
Nel progetot prj2, cosa mi sta dicendo eclipse? e come dovrebbe essere il programma per funzionare?
Sembrava banale come codice, ma fose a occhi esperti....
Grazie.
Tagan