o Enumeração em é uma forma de definir uma classe com constantes fixas e nomeadas com seus respectivos usando a palavra-chave enum. Nisso ' Tutorial Java Enum ”Artigo, vamos aprender adefinir Enumeração junto comexemplos para uma melhor compreensão.
- O que é enumeração?
- Por que precisamos de enumeração?
- Diferenças entre Enum e Class
- Exemplos Práticos de Enum
- Vantagens do Enum
- Enum Usecase: Rock, Jogo de papel e tesoura
O que é enumeração?
Java Enums são classes que possuem um conjunto fixo de constantes ou variáveis que não tendem a mudar. A enumeração em Java é obtida usando a palavra-chave enum. O Java enum constantes são estático e final implicitamente. O recurso Enum está disponível desde JDK versão 1.5.
Por que precisamos de enumeração?
enum melhora a segurança de tipo na verificação em tempo de compilação para evitar erros em tempo de execução, evitando código clichê. Por exemplo, se você tiver que selecionar uma possibilidade entre o menor número de opções disponíveis, digamos,
Trabalho Tipo: (Contrato / Temporário / Permanente)
como encontrar o comprimento de uma matriz em javascript
Então, a melhor opção seria usar um enum. Porque enum pode ser facilmente usado no switch. enum pode ser percorrido. enum posso ter campos, construtores e métodos. Conseqüentemente, aumenta a verificação em tempo de compilação e evita erros devido à passagem de constantes inválidas, pois você já documentou quais valores são legais para serem usados.
Diferenças entre Enum e Class
Embora uma classe e enum tenham funcionalidade semelhante no ambiente Java, eles diferem em alguns aspectos. Vamos discutir as diferenças
Enum | Classe |
As constantes Enum não podem ser substituídas | Constantes de classe podem ser substituídas |
Enum não suporta a criação de objetos | Aula apóia a criação de objetos |
Enum não pode estender outras classes | Uma classe pode estender outras classes |
enum cuma interface de implemento | Uma classe pode implementar interface |
Exemplos Práticos de Enum
Agora, para entender enum de uma maneira muito melhor, vamos executar alguns exemplos práticos com base no seguinte.
- Definindo Enumeração em Java
- Enum usado em Switch Case
- Herança usando enum
- Enum com valores personalizados
- Enum nas instruções if-else-if
- Diferentes métodos usados com enum
Definindo Enumeração em Java
Enum pode ser declarado dentro de uma classe ou fora de um cdeixei. Porém, não pode ser declarado dentro de nenhum método. Vamos dar um pequeno exemplo para entender sua sintaxe, definição e declaração.
Sintaxe:
enum name {constantes}
Neste exemplo, declaramos o a Principal() método dentro enum
definição de pacote public class Edureka {enum Level {BAJA, KTM, YAMAHA} public static void main (String [] args) {Level myVar = Level.KTM System.out.println (myVar)}}
// Ouput
KTM
Neste exemplo, o a Principal() método é declarado lado de fora de enum.
definição de pacote enum Cor {BAJAJ, KTM, YAMAHA} public class Edureka {public static void main (String [] args) {Bike b1 = Color.YAMAHA System.out.println (b1)}}
//Resultado:
YAMAHA
Enum usado em Switch Case
A enumeração também pode ser usada em uma instrução switch. É importante que todas as instruções case usem constantes do mesmo enum usado pela instrução switch. Vamos verificar um exemplo baseado nisso.
Aqui, declararemos um enum com dias da semana como seus elementos e passaremos os dados na forma de uma string para imprimir os dados do caso correspondente.
pacote alterado enum Dia {DOMINGO, SEGUNDA-FEIRA, TERÇA-FEIRA, QUARTA-FEIRA, QUINTA-FEIRA, SÁBADO} public class Edureka {Day day public Edureka (Day day) {this.day = day} public void dayIsLike () {switch (day) {case SEGUNDA-FEIRA: System.out.println ('Olá, hoje é segunda-feira') caso de quebra TERÇA: System.out.println ('Olá, hoje é terça') caso de quebra QUARTA: System.out.println ('Olá, hoje é quarta-feira ') break case QUINTA: System.out.println (' Olá, hoje é quinta ') break case SEXTA: System.out.println (' Olá, Hoje é sexta. ') break case SÁBADO: System.out.println (' Olá, Hoje é seu fim de semana ') break case DOMINGO: System.out.println (' Olá, hoje é feriado ') break default: System.out.println (' Por favor, insira um dia válido. ') Break}} public static void main (String [] args) {String str = 'SEGUNDA-FEIRA' Edureka e1 = new Edureka (Day.valueOf (str)) e1.dayIsLike ()}}
//Resultado:
Oi hoje éSegunda-feira
Herança usando enum
Basicamente, qualquer enum é representado como uma classe que estende a classe abstrata java.lang. Enum e tem vários membros estáticos. Portanto, um enum não pode estender qualquer outra classe ou enum não há múltiplo heranças . Vamos executar um exemplo para entender melhor.
Aqui, herdaremos o sistema operacional baseado no fabricante do telefone.
herança de pacote import java.util.ArrayList import java.util.List public class Edureka {public static void main (String [] args) {List inherit = new ArrayList () inherit.add (LibraryEnum.FIRST) inherit.add (ClientEnum. google) for (HTTPMethodConvertible element: inherit) {System.out.println (element.getHTTPMethodType ())}} interface estática HTTPMethodConvertible {public String getHTTPMethodType ()} static enum LibraryEnum implementa HTTPMethodConvertible {FIRST ('Google Pixel'), SEGUNDO ( 'Huawei'), THIRD ('Apple 11 Pro') String httpMethodType LibraryEnum (String phone) {httpMethodType = phone} public String getHTTPMethodType () {return httpMethodType}} enum estático ClientEnum implementa HTTPMethodConvertible {huawei ('HongMing OS'), apple ('iOS'), google ('Android One') String httpMethodType ClientEnum (String s) {httpMethodType = s} public String getHTTPMethodType () {return httpMethodType}}}
//Resultado:
Google Pixel
Android One
Enum com valores personalizados
Enums têm seus próprios valores de string por padrão, também podemos atribuir alguns valores personalizados a enums. Vamos considerar o exemplo abaixo.
enum Traffic {RED (“STOP”), ORANGE (“WAIT”), GREEN (“GO”)}
No exemplo acima, podemos ver que Traffic enum tem três membros. Nomeadamente,
LARANJA VERMELHA e VERDE com têm seus próprios valores personalizados diferentes PARE, ESPERE e IR respectivamente.
Agora, para usar o mesmo tipo de enum no código, devemos seguir alguns pontos que são:
- Precisamos criar construtor parametrizado para esta classe enum. Porque sabemos disso enum o objeto da classe não pode ser criado explicitamente, então, para inicializar, usamos o construtor parametrizado.
- o construtor não pode ser público ou protegido deve ter privado ou padrão modificadores. Se criarmos public ou protected, permitirá inicializar mais de um objeto que é totalmente contra funcionalidade enum.
- Temos que criar um método getter para obter o valor de enums.
Vamos executar um programa baseado nisso.
pacote tráfego enum TrafficSignal {RED ('STOP'), GREEN ('GO'), ORANGE ('WAIT') private String ação public String getAction () {return this.action} private TrafficSignal (String action) {this.action = ação}} public class Edureka {public static void main (String args []) {TrafficSignal [] signs = TrafficSignal.values () for (TrafficSignal signal: signs) {System.out.println ('name:' + signal.name () + 'ação:' + signal.getAction ())}}}
//Resultado:
nome: ação VERMELHA: PARAR
nome: GREEN action: GO
masculinoe: ação LARANJA: ESPERA
Enum nas instruções if-else-if
Agora, vamos executar um programa baseado em enum em instruções if-else-if. Aqui, encontraremos a direção do percurso, passando os valores das direções disponíveis na enumeração.
pacote Directions enum Directions {EAST, WEST, NORTH, SOUTH} public class Edureka {public static void main (String args []) {Directions dir = Directions.NORTH if (dir == Directions.EAST) {System.out.println ( 'Direction: East')} else if (dir == Directions.WEST) {System.out.println ('Direction: West')} else if (dir == Directions.NORTH) {System.out.println ('Direction : Norte ')} else {System.out.println (' Direção: Sul ')}}}
//Resultado:
Dizercção: Norte
Diferentes métodos usados com enum
Valores (): Quando você cria um enum, o Compilador Java adiciona internamente o valores () método. Este método retorna um matriz contendo todos os valores do enum.
//Sintaxe:
public static enum-type [] values ()
Descobriremos o valor do índice de um elemento específico em uma matriz.
valores de pacote enum Cor {RED, GREEN, BLUE} public class Edureka {public static void main (String [] args) {Color arr [] = Color.values () for (Color col: arr) {System.out.println ( col + 'no índice' + col.ordinal ())} System.out.println (Color.valueOf ('RED'))}}
//Resultado:
o que é pojo na primavera
VERMELHO no índice 0
VERDE no índice 1
AZUL no índice 2
INTERNET
Valor de(): estemétodo é usado para retornar a constante de enumeração cujo valor é igual ao passado como um argumento ao chamar este método.
//Sintaxe:
public static enum-type valueOf (String str)
Aqui, encontraremos o custo de um telefone específico com base na entrada que passamos para a string.
package valuesof enum Mobile {Samsung (1099), Apple (1250), Google (1325) int price Mobile (int p) {price = p} int showPrice () {return price}} public class Edureka {public static void main (String args []) {System.out.println ('Lista de celulares:') for (Mobile m: Mobile.values ()) {System.out.println (m + 'custos' + m.showPrice () + 'dólares' )} Ret ret móvel = Mobile.valueOf ('Samsung') System.out.println ('Selecionado:' + ret)}}
//Resultado:
Samsung custa 1099 dólares
Apple custa 1250 dólares
Google custa 1325 dólares
Selecionado: Samsung
Ordinal(): O interpretador Java adiciona o ordinal() método internamente quando cria um enum. O método ordinal () retorna o índice do valor enum.
//Sintaxe:
public final int ordinal ()
Aqui, descobriremos o valor do índice de um elemento específico em uma matriz. e também a posição da fruta cereja.
Pacote ordinal enum Frutas {Maçã, Banana, Cereja, Tâmara, Sabugueiro} enum Vegetais {Cenoura, Beterraba, Feijão, Tomate, Cebola} public class Edureka {public static void main (String [] args) {Fruits [] fru = Frutas. valores () para (Frutas fr: fru) {System.out.println (fr + ':' + fr.ordinal ())} Frutas f1, f2, f3 f1 = Frutas.Apple f2 = Frutas.Cherry f3 = Frutas.Apple if (f2.compareTo (f1)> 0) {System.out.println (f2 + 'vem depois de' + f1)} Vegetais v1 = Vegetais.Beetroot if (f1.equals (v1)) {System.out.println (' Incorreta') } } }
//Resultado:
Apple: 0
Banana: 1
Cereja: 2
Data: 3
Sabugueiro: 4
Cherry vem depois da Apple
Vantagens do Enum
- Enum em Java melhora segurança de tipo
- Enum é projetado para ser facilmente usado em trocar casos
- Enum pode ser atravessou
- Enum pode ter campos, métodos, e construtores
- Enum pode implementar interfaces
- Enum não pode estender um classe porque internamente, estende Enum classe
Enum Usecase: Rock, Paper, Scissors Game
Nós vamos usar enum em Java para criar nosso jogo de infância, a pedra (pedra), papel e tesoura . O código a seguir explica como.
pacote Edureka import java.util.Random import java.util.Scanner enum HandSign {SCISSOR, PAPER, STONE} public class SPS {public static void main (String [] args) {Random random = new Random () boolean gameOver = false HandSign playerMove = HandSign.SCISSOR HandSign computerMove int numTrials = 0 int numComputerWon = 0 int numPlayerWon = 0 int numTie = 0 Scanner in = new Scanner (System.in) System.out.println ('nDeixe-nos começar ... n') enquanto (! gameOver) {System.out.printf ('% nScissor-Paper-Stonen') boolean validInput do {System.out.print ('nSua vez (Digite s para uma tesoura, p para papel, t para pedra, q para sair): n ') char inChar = in.next (). toLowerCase (). charAt (0) validInput = true if (inChar ==' q ') {gameOver = true} else if (inChar ==' s ' ) {playerMove = HandSign.SCISSOR} else if (inChar == 'p') {playerMove = HandSign.PAPER} else if (inChar == 't') {playerMove = HandSign.STONE} else {System.out.println ( 'nVerifique a entrada e tente novamente! n') validInput = false}} enquanto (! val idInput) if (! gameOver) {int aRandomNumber = random.nextInt (3) if (aRandomNumber == 0) {computerMove = HandSign.SCISSOR System.out.println ('nIt é minha vez: SCISSORn')} else if (aRandomNumber = = 0) {computerMove = HandSign.PAPER System.out.println ('nÉ minha vez: PAPERn')} else {computerMove = HandSign.STONE System.out.println ('nÉ minha vez: STONEn')} if (computerMove = = playerMove) {System.out.println ('nIt's a Tie! n') ++ numTie} else if (computerMove == HandSign.SCISSOR & amp & amp playerMove == HandSign.PAPER) {System.out.println ('nScissor corta papel , Ganhei! N ') ++ numComputerWon} else if (computerMove == HandSign.PAPER & amp & amp playerMove == HandSign.STONE) {System.out.println (' nPaper wraps stone, I won! N ') ++ numComputerWon} else if (computerMove == HandSign.STONE & amp & amp playerMove == HandSign.SCISSOR) {System.out.println ('nStone quebra a tesoura, ganhei! n') ++ numComputerWon} else {System.out.println ('nCongratulations. ..! Você ganhou! N ') ++ numPlayerWon} ++ numTrials}} System.out.printf ('% nO número de tentativas: '+ numTrials) System.out.printf (' Eu ganhei% d (%. 2f %%) . Você ganhou% d (%. 2f %%).% N ', numComputerWon, 100,0 * numComputerWon / numTrials, numPlayerWon, 100,0 * numPlayerWon / numTrials) System.out.println (' Tchau !, Espero que tenha gostado ..! ' )}}
//Resultado:
Comecemos...
Pedra-Papel-Tesoura
Sua vez (Digite s para uma tesoura, p para papel, t para pedra, q para sair):
s
É a minha vez: STONE
Pedra quebra a tesoura, eu ganhei!
Pedra-Papel-Tesoura
Sua vez (Digite s para uma tesoura, p para papel, t para pedra, q para sair):
o que
O número de tentativas: 1Eu ganhei 1 (100,00%). Você ganhou 0 (0,00%).
Tchau !, Espero que tenham gostado ..!
Com isso, chegamos ao fim deste Tutorial do Java Enum. Espero que você tenha entendido o Enum em Java e sua implementação por meio de alguns exemplos em tempo real.
Agora que você entendeu enum noções básicas por meio deste “Tutorial do Java Enum” verifique o pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. Os cursos de treinamento e certificação Java J2EE e SOA da Edureka são projetados para estudantes e profissionais que desejam ser um desenvolvedor Java. O curso foi desenvolvido para dar a você uma vantagem na programação Java e treiná-lo para os conceitos básicos e avançados de Java, juntamente com vários frameworks Java como Hibernate Primavera .
Tem alguma questão para nós? Mencione-o na seção de comentários deste blog “Java Enum Tutorial” e entraremos em contato com você o mais breve possível.