variable parameter metodos example java string keyword

parameter - string[] java



Clase de cuerda hacer confusiĆ³n (2)

Recientemente acabo de recibir un error en java que

Exception in thread "main" java.lang.NoSuchMethodError: main

Incluso si mi clase era solo de 3 líneas de código.

public class Test{ public static void main(String[] args){ System.out.println("hello"); } }

Me preguntaba por qué sucede esto, pero luego me enteré de que había una cadena pública de clase que había intentado y creado en el mismo paquete.

así que ahora surge una nueva pregunta: qué sucede en este tipo de situación, aunque String no es una keyword definida en java (puede usarla en su código)

Luego acabo de eliminar el archivo String.java & String.class del paquete pero suena extraño que no se pueda usar la clase String también.

Pregunta: ¿Java da mayor prioridad a nuestra clase personalizada?


Siempre puedes usar un nombre completo:

public static void main(java.lang.String[] args) ...

La historia que estás contando dice que podemos usar String como el nombre de una de nuestras clases. Pero, como en la vida real, si hay dos personas llamadas "John", a veces es necesario que las desambigüe.


Su principal método debe coincidir

public static void main(java.lang.String[] args){ ... }

Si crea su propia clase de String en el mismo paquete donde está la clase con su método principal, se convertirá en

public static void main(your.own.package.String[] args){ ... }

lo cual es válido, pero no permitirá que el lanzador de tiempo de ejecución encuentre un método principal, ya que espera java.lang.String[] como parámetro.

Las clases de java.lang se importan automáticamente de forma predeterminada, por lo que no necesita una declaración de import explícita, lo que probablemente lo hizo aún más confuso.

Como regla general, evitaría nombrar a mis propias clases de la misma manera que las clases de Java Runtime, siempre que sea posible, especialmente de java.lang .

Vea también el JLS: Capítulo 7. Paquetes :

Un paquete consta de varias unidades de compilación (§7.3). Una unidad de compilación tiene acceso automáticamente a todos los tipos declarados en su paquete y también importa automáticamente todos los tipos públicos declarados en el paquete predefinido java.lang .