Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

String é uma palavra reservada?

Criei uma classe chamada String e ela não executa, sempre dá o erro:

Erro: o método main não foi encontrado na classe br.com.alura.String; defina o método main como:
   public static void main(String[] args)
ou uma classe de aplicativo JavaFX deve expandir javafx.application.Application

Quando altero o nome deste arquivo e da classe para algo como ABC, ela passa a executar.

Segue o código da classe:

package br.com.alura;

public class String {

    public static void main(String[] args) {
        System.out.println("OI");

    }

}

Eu tinha a expectativa que o código acima executasse, mesmo que o nome de minha classe fosse String, já que esta classe está em um pacote diferente e entendo que o nome da classe é formado pelo nome do pacote acrescido do nome da classe. Não imaginaria que desse qualquer tipo de conflito.

4 respostas

Pois é camarada, nao vai executar. A classe String ja existe faz parte do java.lang.

https://docs.oracle.com/javase/7/docs/api/

.

solução!

Oi pessoal, String não é uma palavra reservada não. Você pode sim declarar uma classe que se chama String. O problema que está acontecendo é que o compilador não está encontrando o seu método main. Isso está acontecendo pois o compilador espera encontrar um método que recebe como argumento a classe String do Java, e não essa que você acabou de criar. Para fazer ele rodar, basta você usar a classe String certa, arrumando a assinatura do método de String para java.lang.String, ficaria assim:

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

Abraços!

Obrigado Philippe. Para mim, sua resposta faz total sentido.