methods setsize - ¿Cómo sabe Java cuando un método nulo ha terminado su cuerpo de método?




para que (3)

Por el corchete final Una vez que el hilo llega al final del método, volverá. Además, el programador puede especificar cuándo termina un método vacío escribiendo return;

Editar: Tengo la pregunta mezclada. El subproceso ejecuta un método a la vez, una instrucción a la vez, por lo que una vez que el subproceso finaliza un método irá a la siguiente línea en el método de llamada.

Digamos que tengo un código:

public int doSomething(int x)
{
    otherMethod(x);
    System.out.println("otherMethod is complete.");
    return 0;
}

public void otherMethod(int y)
{
    //method body
}

Dado que el tipo de devolución de otherMethod es nulo, ¿cómo sabe el método otherMethod cuándo se ha completado otherMethod , por lo que puede pasar al siguiente e imprimir " otherMethod is complete."?

EDITAR: return 0; agregado return 0; hacer un método de algo para que el código de ejemplo compile.


El analizador sabe dónde está el final de la ejecución e incluso agrega una devolución, por ejemplo:

 public static void main(String args[])  {

}

compila a:

 public static main([Ljava/lang/String;)V
   L0
    LINENUMBER 34 L0
    RETURN <------ SEE?
   L1
    LOCALVARIABLE args [Ljava/lang/String; L0 L1 0
    MAXSTACK = 0
    MAXLOCALS = 1
}

Y lo mismo se aplica a su código (aunque he agregado en la devolución 0 ya que su código no se compila):

 public int doSomething(int x)
    {
        otherMethod(x);
        System.out.println("otherMethod is complete.");
        return 0;
    }

    public void otherMethod(int y)
    {
        //method body
    }

código compilado:

public doSomething(I)I
   L0
    LINENUMBER 38 L0
    ALOAD 0
    ILOAD 1
    INVOKEVIRTUAL TestRunner.otherMethod (I)V
   L1
    LINENUMBER 39 L1
    GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
    LDC "otherMethod is complete."
    INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
   L2
    LINENUMBER 40 L2
    ICONST_0
    IRETURN
   L3
    LOCALVARIABLE this LTestRunner; L0 L3 0
    LOCALVARIABLE x I L0 L3 1
    MAXSTACK = 2
    MAXLOCALS = 2

  // access flags 0x1
  public otherMethod(I)V
   L0
    LINENUMBER 46 L0
    RETURN <-- return inserted!
   L1
    LOCALVARIABLE this LTestRunner; L0 L1 0
    LOCALVARIABLE y I L0 L1 1
    MAXSTACK = 0
    MAXLOCALS = 2
}

Wicket también es una alternativa que separa completamente java de html, por lo que un diseñador y un programador pueden trabajar juntos y en diferentes conjuntos de códigos sin la menor comprensión entre ellos.

Mira a Wicket.





java methods void