Java java.lang.AbstractMethodError

Shiv Yadav 12 Oktober 2023
Java java.lang.AbstractMethodError

Dieser Artikel hilft Ihnen, den java.lang.AbstractMethodError zu verstehen und wie Sie ihn in Java lösen können.

Beheben Sie den Fehler java.lang.AbstractMethodError in Java

Manchmal kann es vorkommen, dass unser Programm zur Laufzeit AbstractMethodError erfährt. Das Finden der Ursache des Problems kann einige Zeit dauern, wenn wir mit diesem Fehler nicht vertraut sind.

In dieser Lektion untersuchen wir AbstractMethodError genauer. Wir erfahren, was ein AbstractMethodError ist und wann einer auftreten kann.

Wenn ein Programm versucht, eine nicht implementierte abstrakte Methode zu erfinden, wird der Fehler AbstractMethodError ausgegeben. Wir wissen, dass der Compiler einen Fehler auslöst, wenn abstrakte Prozesse nicht implementiert sind; Die Anwendung wird daher nicht erstellt.

Wir konstruieren ein AbstractMethodError-Beispiel mit dem Befehlszeilen-Javac-Compiler. Dieser Fehler wird generiert, wenn die Klassen unabhängig kompiliert werden, was die meisten IDEs verbieten.

Erstellen Sie aus dem folgenden Quellcode eine Java-Klasse namens Abstract:

Code (Abstract.java):

public class Abstract {
  public void hello() {
    System.out.println("Hello! I belong to abstract class");
  }
}

Befolgen Sie diese Anweisungen in der Befehlszeile, um diese Klasse zu kompilieren:

javac Abstract.java

Erstellen Sie die zweite Klasse mit dem Namen AbstractClass mit dem folgenden Quellcode, nachdem die erste Klasse kompiliert wurde:

Code (AbstractClass.java):

public class AbstractClass extends Abstract {
  public static void main(String[] args) {
    AbstractClass newabs = new AbstractClass();

    newabs.hello();
  }
}

Dies würde sich aus dem Zusammenbau und der Ausführung wie folgt ergeben:

javac AbstractClass.java
java AbstractClass

Ausgang:

Hello! I belong to abstract class

Obwohl alles in Ordnung ist, was würde passieren, wenn wir die Funktion hello() in abstract ändern und dann Abstract neu kompilieren, ohne AbstractClass zu ändern? Probieren Sie es aus, indem Sie den Abstract wie folgt ändern:

public abstract class Abstract {
  public abstract void hello();
}

Wir können diese Klasse jetzt einfach neu kompilieren; Wenn wir jedoch die AbstractClass ausführen, erhalten wir Folgendes:

Exception in thread "main" java.lang.AbstractMethodError: AbstractClass.hello()V
        at AbstractClass.main(AbstractClass.java:6)

Angenommen, eine Basisklassenmethode wird in eine abstrakte geändert, wodurch die Basisklasse geändert wird und die erforderlichen Änderungen nicht in der untergeordneten Klasse vorgenommen werden. In diesem Fall tritt AbstractMethodError auf (d. h. Überschreiben der abstrakten Methoden).

Der Programmierer verwendet also, genau wie im obigen Beispiel, eine abstrakte, nicht implementierte Methode (ohne sich ihrer Abstraktheit bewusst zu sein). Da nur die Basisklasse geändert und kompiliert wird, ist er sich dieses Problems nicht bewusst.

In dieser Situation ist lediglich die Implementierung der Methode Abstract in der AbstractClass erforderlich. Das Problem AbstractMethodError würde dadurch behoben.

public class AbstractClass extends Abstract {
  public static void main(String[] args) {
    AbstractClass newabs = new AbstractClass();

    newabs.hello();
  }

  @Override
  public void hello() {
    System.out.println("Hello! I belong to abstract class");
  }
}

Ausgang:

Hello! I belong to abstract class
Autor: Shiv Yadav
Shiv Yadav avatar Shiv Yadav avatar

Shiv is a self-driven and passionate Machine learning Learner who is innovative in application design, development, testing, and deployment and provides program requirements into sustainable advanced technical solutions through JavaScript, Python, and other programs for continuous improvement of AI technologies.

LinkedIn

Verwandter Artikel - Java Error