Tenho uma dúvida

11 respostas
J

Bom dia, eu estou com um pequeno problema declarando uma class do tipo “enum”. Inicialmente, pensei que poderia ser da versão do java que estou usando no meu pc, ou até da versão do eclipse, mas tenho tudo atualizado. Vou postar um troço de código para exemplificar o meu problema.

public enum CategoriaDeAuxiliar {
		ASSISTENTE, ADMINISTRATIVO, TECNICO
}

Neste pequeno troço, o tipo “enum” aparece sublinhado e dá o seguinte erro: “Syntax error on token “enum”, interface expected”
Já tentei muitas soluções mas nada resultou ainda.

Obrigado e abraço.

11 Respostas

J

Cara, você tinha o seu workspace mal configurado.
Em Workspace Settings você teria de alterar as definições do compilador para ler linguagem superior à versão 1.4 do java.

Valeu.

Veronicaaa

Olá
Qual a versão do Java e do Eclipse você está utilizando? E esse é todo o conteúdo do seu arquivo?

W

Ate onde eu sei vc nao pode declarar classe desse jeito.

Pra mim seria algo do tipo :
public class CategoriaDeAuxiliar

e o que sao esses ASSISTENTE, ADMINISTRATIVO, TECNICO.

membros da classe ?

Se for vc tem que declarar eles com o tipo por exemplo uma classe Usuario:

public class Usuario {

   String nome;
   String username;

   // construtor
   public Usuario() {} 
 
}

e por ai vai.

//Daniel

Veronicaaa

windsofhell:
Ate onde eu sei vc nao pode declarar classe desse jeito.

Pra mim seria algo do tipo :
public class CategoriaDeAuxiliar

e o que sao esses ASSISTENTE, ADMINISTRATIVO, TECNICO.

membros da classe ?

Se for vc tem que declarar eles com o tipo por exemplo uma classe Usuario:

public class Usuario {

   String nome;
   String username;

   // construtor
   public Usuario() {} 
 
}

e por ai vai.

//Daniel


Ele está trabalhando com enums, isso é permitido a partir de java 1.5.

W

Veronicaaa:
windsofhell:
Ate onde eu sei vc nao pode declarar classe desse jeito.

Pra mim seria algo do tipo :
public class CategoriaDeAuxiliar

e o que sao esses ASSISTENTE, ADMINISTRATIVO, TECNICO.

membros da classe ?

Se for vc tem que declarar eles com o tipo por exemplo uma classe Usuario:

public class Usuario {

   String nome;
   String username;

   // construtor
   public Usuario() {} 
 
}

e por ai vai.

//Daniel


Ele está trabalhando com enums, isso é permitido a partir de java 1.5.

Ahhh ok. Vou dar uma estudada nisso. :slight_smile:

W

Ahhh agora entendi, achei um exemplo. Vai me ajudar pra caramba em umas coisas que eu estou fazendo.
Pra quem nao conhece ai vai um exemplo.

import java.util.*;

enum OperatingSystems {
    windows, unix, linux, macintosh
}

public class EnumExample1 {
    public static void main(String args[])
    {
        OperatingSystems os;

        os = OperatingSystems.windows;
        switch(os) {
            case windows:
                System.out.println("You chose Windows!");
                break;
            case unix:
                System.out.println("You chose Unix!");
                break;
            case linux:
                System.out.println("You chose Linux!");
                break;
            case macintosh:
                System.out.println("You chose Macintosh!");
                break;
            default:
                System.out.println("I don't know your OS.");
                break;
        }
    }
}
J

Após alterar as configurações do workspace, a class que postei como exemplo ficou funcionando legal.
:wink:

ViniGodoy
windsofhell:
Ahhh agora entendi, achei um exemplo. Vai me ajudar pra caramba em umas coisas que eu estou fazendo. Pra quem nao conhece ai vai um exemplo.
import java.util.*;

enum OperatingSystems {
    windows, unix, linux, macintosh
}

public class EnumExample1 {
    public static void main(String args[])
    {
        OperatingSystems os;

        os = OperatingSystems.windows;
        switch(os) {
            case windows:
                System.out.println("You chose Windows!");
                break;
            case unix:
                System.out.println("You chose Unix!");
                break;
            case linux:
                System.out.println("You chose Linux!");
                break;
            case macintosh:
                System.out.println("You chose Macintosh!");
                break;
            default:
                System.out.println("I don't know your OS.");
                break;
        }
    }
}

Esse exemplo com "case" sub-aproveita o fato do enum suportar polimorfismo.
Dá uma olhada nisso aqui: http://www.guj.com.br/posts/list/55885.java

ViniGodoy

Dica: da próxima vez abra o tópico com um nome mais específico como: “Tenho uma dúvida com enums” ou “Tento usar enum mas recebo Syntax error on token”.

Isso facilita para na hora de decidirmos se sabemos ou não responder sua dúvida. :wink:

ViniGodoy

Mais fácil do que polimorfismo, esse código pode ser refatorado levando em consideração que o enum suporta propriedades.
O nome do OS é uma ótima propriedade.

Refatorando:

import java.util.*;   
  
enum OperatingSystems {   
    windows("Windows"), unix("Unix", linux("Linux"), macintosh("Mac");

    private String name;

    private OperatingSystems(String name) {
        this.name = name;
    }

    public String getOsName() {
        return name;
    }
}   
  
public class EnumExample1 {   
    public static void main(String args[])   
    {   
        OperatingSystems os;   
  
        os = OperatingSystems.windows;   
        if (os != null) {
            System.out.println("You chose " + os.getOsName() + "!");   
        }
        else {
            System.out.println("I don't know your OS.");
        }
    }   
}

A grande vantagem é que, se quisermos mudar o nome de Mac para Macintosh, faremos só no enum, sem ter que procurar todos os cases que estavam espalhados pelo código.

Além disso, se resolvermos adicionar outro SO no futuro, já saberemos que precisamos dar um nome descrição para ele. ;)

J

ViniGodoy:
Dica: da próxima vez abra o tópico com um nome mais específico como: “Tenho uma dúvida com enums” ou “Tento usar enum mas recebo Syntax error on token”.

Isso facilita para na hora de decidirmos se sabemos ou não responder sua dúvida. ;)

Você tem razão, peço desculpa, nem lembrei desse pormenor.

Valeu :wink:

Criado 26 de outubro de 2007
Ultima resposta 26 de out. de 2007
Respostas 11
Participantes 4