¿Por qué es un método disponible en Java antes de su declaración?

oro;

Yo estaba pasando por el concepto de hoistingen JavaScript, donde todas las funciones y las declaraciones de variables se izan antes de cualquier ejecución se lleva a cabo y esta es la razón por la que una función está disponible antes de su parte real de la declaración.

Me hizo pensar exactamente cómo trabajó en Java.

Considere el siguiente código:

package declarationOrder;

public class Main {

    int num = init();

    int init() {
        return 5;
    }
}

¿Cómo es exactamente el método init()disponible para una llamada antes de su parte de declaración se alcanza?

Considere otro ejemplo:

package declarationOrder;

public class Main {

    int num1 = num2; // compiler error
    int num2 = 5;
}

¿Cómo es que el orden de declaración de las variables juega un papel aquí?

¿Por qué y cómo es el método tratado de manera diferente?

YCF_L:

El compilador seguir un orden para cargar contenido (atributos, métodos, bloques estáticos, ..) en la clase en Java:

En su caso, el método es el primero que se cargan, a continuación, los atributos de clase.

acerca de los atributos que se cargará en el orden de inicialización, se produce un error en el segundo ejemplo, ya num2se ha mencionado antes num1si invertir el fin de que funcione bien:

int num2 = 5;
int num1 = num2;

Para más detalles, ver 12.4.2. Procedimiento detallado de inicialización

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=201815&siteId=1
Recomendado
Clasificación