Ciao!
Nonostante io abbia letto il tutorial e altri esempi, non riesco proprio a capire come funziona il comando super![]()
Ho capito che utilizzandolo si richiama il metodo precedentemente definito in un'altra classe, che nell'attuale classe è stato ridefinito. Ho provato a scrivere un pezzo di codice in cui utilizzo il metodo read() della classe Reader, però non funziona!
Sto cercando di leggere caratteri dalla tastiera e memorizzarli in una stringa che comparo poi con la parola "ciao", se nella stringa non scrivo ciao la classe ridefinita read() mi rimanda a super.read(), che in realtà dovrebbe leggermi il carattere in ingresso. Invece viene segnalato questo errore:
Cosa c'è che non va?codice:Exception in thread "main" java.lang.NoSuchMethodError: main
Questo è il codice:
codice:import java.io.*; import static java.lang.System.in; import java.lang.*; public abstract class Prova_super extends Reader { public boolean match(String str) throws IOException { boolean a; StringBuilder stringa = new StringBuilder(); char ch; Reader in = new InputStreamReader(System.in); do{ stringa.append((char)in.read()); if(str.equals(stringa)) a=true; else{ a=false; } } while(in.ready()); return a; } public int read() throws IOException { if (match("ciao")) return VAR; if (match("buongiorno")) return super.read(); } public static final int VAR = Integer.MIN_VALUE; public void main(String[] args) throws IOException { int ch; while ((ch = read()) != 13) { switch (ch) { case VAR: System.out.print("ciaoo"); break; default: System.out.print("buongiorno"); } } } }