1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

java.lang.ClassCastException bei Interface

  • 0825099
  • 6. Dezember 2008 um 09:33
  • Unerledigt
  • 0825099
    1
    0825099
    Gast
    • 6. Dezember 2008 um 09:33
    • #1

    Ich möchte ein Interface schreiben und soll dafür eine Methode schreiben, die zwei Zahlen aus einem Stack addiert. Die Übersetzung klappt, das Ausführen aber nicht. Wenn ich das Hauptprogramm ausführe, bekomme ich folgende Fehlermeldungen:

    Code
    java.lang.NoSuchMethodException: AddOperation.<init>()
    	at java.lang.Class.getConstructor0(Class.java:2678)
    	at java.lang.Class.getConstructor(Class.java:1629)
    	at Main.saveAddOperation(Main.java:24)
    	at Main.registerOperations(Main.java:35)
    	at Main.<init>(Main.java:17)
    	at Main.main(Main.java:81)

    Was zum Henker will Java mir damit sagen? Die Klasse sieht wie folgt aus:

    Java
    import java.util.Stack;
    class AddOperation {
        public static final double EPSILON = 0.000000001;
        public void execute (Stack<Double> op) throws InvalidParameterException {
            ... Code für die Addition ...
        }
        public String getOperationSymbol () { ... }
    }

    Was mach' ich falsch?

  • 0825099
    1
    0825099
    Gast
    • 6. Dezember 2008 um 09:48
    • #2

    Ich dachte, dass das Programm bis nächste Woche abzugeben ist. Dem ist aber nicht so. Also werde ich die Grundlagen für die Umsetzung vermutlich erst noch in der Vorlesung hören.

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 6. Dezember 2008 um 09:49
    • #3

    gehört eigentlich ins eprog-forum zu beispiel 6...

    wie rufst du das programm auf? die operations-classfiles müssen beim ausführen im classpath gefunden werden. ausführen nach angabe:

    Code
    java -cp ".;main.jar" Main < Operations.i1 > Operations.out1

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 6. Dezember 2008 um 10:15
    • #4
    Zitat von 0825099

    Was zum Henker will Java mir damit sagen?

    Es will dir sagen, dass diese Klasse keinen Konstruktor hat.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • 0825099
    1
    0825099
    Gast
    • 6. Dezember 2008 um 11:39
    • #5

    MUSS es denn einen Konstruktor geben? Die Klasse enthält doch nur Methoden!

    Und aufrufen tu ich die Klasse über: Username$ java Main
    Ich habe Main.jar entpackt.

    Wie gesagt, ich werde auf weitere Infos von der Vorlesung warten, bevor ich euch weiter quäle.
    Vielen Dank erstmal!

  • hal
    32
    hal
    Mitglied
    Reaktionen
    52
    Punkte
    11.122
    Beiträge
    2.208
    • 6. Dezember 2008 um 12:43
    • #6

    Ja, brauchst du.

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • 0825099
    1
    0825099
    Gast
    • 6. Dezember 2008 um 13:24
    • #7

    OK, danke!

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    Punkte
    4.697
    Beiträge
    913
    • 6. Dezember 2008 um 13:49
    • #8

    Eine Klasse hat in Java immer einen Konstruktor. Wenn du selber keinen definierst, dann wird automatisch ein Konstruktor ohne Parameter angelegt, der keinen code enthaelt:

    Code
    public AddOperation(){}

    einen solchen Konstruktor, der keine argumente/parameter enthaelt, nennt man in Java auch den "Defaultkonstruktor".

    Es wird aber nur dann ein Konstruktor angelegt, wenn du selber keinen definiert hast!

    Deine Fehlermeldung besagt nun: "Es wird ein Konstruktor ohne Parameter aufgerufen, aber er gibt keinen solchen Konstruktor. Vermutlich hast du also einen eigenen Konstruktor angelegt, der parameter enthaelt. Zum Beispiel sowas:

    Code
    public AddOperation(int firstOperand, int secondOperand){
      this.firstOperand = firstOperand;
      this.secondOperand = secondOperand;
    }

    und dann versucht, den (jetzt nicht existierenden) Defaultkonstruktor aufzurufen:

    Code
    class Main{
      ...
      public static void saveAddOperation(){
        ...
         //Fehler! diesen leeren Konstruktor gibt es nicht.
         AddOperation addOperation = new AddOperation(); 
        ...
      }
      ...
    }


    was du machen kannst ist jetzt entweder den default konstruktor selber anlegen, oder den anderen loeschen, oder statt des default konstruktors den anderen aufzurufen:

    Code
    class Main{
      ...
      public static void saveAddOperation(){
        ...
         AddOperation AddOperation = new AddOperation(10,17); 
        ...
      }
      ...
    }

    lg, Benjamin Ferrari, bookworm.at

    2 Mal editiert, zuletzt von a9bejo (6. Dezember 2008 um 13:53)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern