'class' or 'interface' expected?



  • Hab folgenden Code und bekomme bei der import Klausel immer einen Fehler ('class' or 'interface' expected) - was mache ich falsch?

    class SchlechteKlasse {
        private int n;
        public SchlechteKlasse(int n) {
            this.n = n;
        }
        public int getN() {return n;}
        public String toString(){return ""+n;}
    }
    
    class BessereKlasse extends SchlechteKlasse {
        public BessereKlasse(int n) {super(n);}
        public boolean equals(Object o) {
    	BessereKlasse o1 = (BessereKlasse)o;
            if(o1 == null) return false;
    	return o1.getN()==getN();
        }
    }
    
    class GuteKlasse extends BessereKlasse {
    	public GuteKlasse(int n) {super(n);}
    	public int hashCode() {
    		return getN() * 1000 + 47100;
            }
    }
    
    import java.util.*;
    
    public class Main {
        public static void main(String[] args)
        {
    	SchlechteKlasse s1 = new SchlechteKlasse(10);
    	SchlechteKlasse s2 = new SchlechteKlasse(20);
    	SchlechteKlasse s3 = new SchlechteKlasse(10);	
    
    	BessereKlasse b1 = new BessereKlasse(10);
            BessereKlasse b2 = new BessereKlasse(20);
            BessereKlasse b3 = new BessereKlasse(10);
    
            GuteKlasse g1 = new GuteKlasse(10);
            GuteKlasse g2 = new GuteKlasse(20);
            GuteKlasse g3 = new GuteKlasse(10);
    
            System.out.println(s1.equals(s1));  // true
            System.out.println(s1.equals(s3));  // false
            System.out.println(s1.equals(s2));  // false
    
            System.out.println(b1.equals(b1));  // true
            System.out.println(b1.equals(b3));  // true
            System.out.println(b1.equals(b2));  // false
    
            // Hash Code
            System.out.println(s1.hashCode());  // 19972507
            System.out.println(s2.hashCode());  // 32472
            System.out.println(s3.hashCode());  // 82725
    
            System.out.println(b1.hashCode());  // 18581223
            System.out.println(b2.hashCode());  // 3536198
            System.out.println(b3.hashCode());  // 7699183
    
            System.out.println(g1.hashCode());  // 57100
            System.out.println(g2.hashCode());  // 67100
            System.out.println(g3.hashCode());  // 57100
    
            HashSet S = new HashSet();
            HashSet B = new HashSet();
            HashSet G = new HashSet();
    
            S.add(s1); S.add(s2); S.add(s3);
            B.add(b1); B.add(b2); B.add(b3);
            G.add(g1); G.add(g2); G.add(g3);
    
            System.out.println(S); // [10, 10, 20]
            System.out.println(B); // [20, 10, 10]
            System.out.println(G); // [20, 10]
        }    
    }
    


  • Liegt das alles in Main.java?
    Ich würd das import als erste Anweisung in die Klasse schreiben. Alles richtig speichern. Build&Clean Project und dann nochmal Feuer geben!



  • Griffin schrieb:

    Liegt das alles in Main.java?
    Ich würd das import als erste Anweisung in die Klasse schreiben. Alles richtig speichern. Build&Clean Project und dann nochmal Feuer geben!

    1. Jede Java-Klasse braucht eine Eigene Datei, dass ist zwar nicht erforderlich, macht das Programm aber übersichtlicher
    2. import Anweisungen haben nur am Anfang der Datei, außerhalb der Klasse und nach der package Anweisung was zu suchen

    Der Fehler besagt, dass an dieser Stelle, zwischen zwei Klassen, kein import, sondern nur eine Interface oder Klassendeklination stehen darf.



  • Kampino schrieb:

    2. import Anweisungen haben nur am Anfang der Datei, außerhalb der Klasse und nach der package Anweisung was zu suchen

    Der Fehler besagt, dass an dieser Stelle, zwischen zwei Klassen, kein import, sondern nur eine Interface oder Klassendeklination stehen darf.

    aso... gut jetzt läufts



  • 1. Jede Java-Klasse braucht eine Eigene Datei, dass ist zwar nicht erforderlich, macht das Programm aber übersichtlicher
    2. import Anweisungen haben nur am Anfang der Datei, außerhalb der Klasse und nach der package Anweisung was zu suchen

    Mit der Frage, ob alles in einer Klasse liegt, wollte ich nur deine erste Aussage erfragen!
    Meine Aussage mit dem import bestätigt auch nur deine zweite Aussage. 🙂

    btw: Natürlich kann eine Datei auch mehrere Klassen enthalten, nämlich private Klassen oder anonyme Klassen


Anmelden zum Antworten