Java java.lang.AbstractMethodError

Shiv Yadav 12 octubre 2023
Java java.lang.AbstractMethodError

Este artículo lo ayudará a comprender el java.lang.AbstractMethodError y cómo resolverlo en Java.

Solucione el error java.lang.AbstractMethodError en Java

A veces, nuestro programa puede experimentar AbstractMethodError en tiempo de ejecución. Encontrar la raíz del problema podría llevar algún tiempo si no estamos familiarizados con este error.

En esta lección, examinaremos AbstractMethodError con más detalle. Aprenderemos qué es un AbstractMethodError y cuándo podría ocurrir.

Cuando un programa intenta inventar un método abstracto que no ha sido implementado, se lanza el error AbstractMethodError. Sabemos que el compilador generará un error si no se implementan procesos abstractos; la aplicación no se creará como resultado.

Construiremos un ejemplo de AbstractMethodError utilizando el compilador javac de línea de comandos. Este error se genera cuando las clases se compilan de forma independiente, lo que la mayoría de los IDE prohíben.

Cree una clase de Java llamada Abstract a partir del código fuente a continuación:

Código (Resumen.java):

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

Siga estas instrucciones en la línea de comando para compilar esta clase:

javac Abstract.java

Cree la segunda clase, llamada AbstractClass, utilizando el siguiente código fuente una vez compilada la primera clase:

Código (AbstractClass.java):

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

    newabs.hello();
  }
}

Esto resultaría de ensamblar y ejecutar de la siguiente manera:

javac AbstractClass.java
java AbstractClass

Producción :

Hello! I belong to abstract class

Aunque todo está bien, ¿qué pasaría si cambiamos la función hola() para que sea abstracta y luego volvemos a compilar Abstract sin modificar AbstractClass? Pruébelo cambiando el Resumen a algo como esto:

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

Ahora podemos recompilar fácilmente esta clase; sin embargo, cuando ejecutamos la AbstractClass, obtenemos lo siguiente:

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

Supongamos que un método de clase base se cambia para que sea abstracto, modificando la clase base como resultado, y las modificaciones necesarias no se realizan en la clase secundaria. En ese caso, ocurrirá AbstractMethodError (es decir, anulando los métodos abstractos).

Así, al igual que en el ejemplo anterior, el programador utiliza un método abstracto, no implementado (sin ser consciente de su abstracción). Dado que solo se modifica y compila la clase base, no tiene conocimiento de este problema.

La implementación del método Abstract en AbstractClass es todo lo que se requiere en esta situación. El problema AbstractMethodError se resolvería haciendo esto.

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");
  }
}

Producción :

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

Artículo relacionado - Java Error