Utilitários Marco Antonio Enum • Como o nome sugere, é uma enumeração de opções para uma determinada situação • A principal vantagem é limitar as opções para o programador em atributos que fazem parte de um domínio. – Ex. sexo só pode ser masculino ou feminino – Dias úteis são seg, ter, qua, qui, sex Tipo de Pessoa package com.javabasico.enumeracoes; public enum TipoDePessoa { FISICA, JURIDICA; } Pessoa public class Pessoa { private String nome; private String endereco; private String telefone; private TipoDePessoa tipoDePessoa; } Teste package net.javabasico.enumeracoes; public class TesteDaPessoa { public TesteDaPessoa() { Pessoa p = new Pessoa();\ p.setNome("Marco"); p.setEndereco("Meu Endereço"); p.setTelefone("Meu Telefone"); p.setTipoDePessoa(TipoDePessoa.FISICA); System.out.println("Tipo: " + p.getTipoDePessoa()); } public static void main(String[] args) { new TesteDaPessoa(); } } Nova versão do tipo • Podemos informar valores personalizados para as opções de um enum. Tipo package net.javabasico.enumeracoes; public enum TipoDePessoa { FISICA("Pessoa Física"), JURIDICA("Pessoa Jurídica"); private final String tipo; private TipoDePessoa(String tipo) { this.tipo = tipo; } public String getTipo() { return tipo; } } Novo teste • Agora podemos recuperar o valor personalizado do nosso enum. Novo teste package net.javabasico.enumeracoes; public class TesteDaPessoa { public TesteDaPessoa() { Pessoa p = new Pessoa(); p.setNome("Marco"); p.setEndereco("Meu Endereço"); p.setTelefone("Meu Telefone"); p.setTipoDePessoa(TipoDePessoa.FISICA); System.out.println("Tipo: " + p.getTipoDePessoa().getTipo()); } public static void main(String[] args) { new TesteDaPessoa(); } } Enum Sexo • Crie o enum Sexo e adicione esse atributo na classe pessoa. Enum DiaDaSemana • Vamos criar o enum DiaDaSemana. DiaDaSemana package com.javabasico.enumeracoes; public enum DiaDaSemana { SEGUNDA("Segunda"), TERCA("Terça"), QUARTA("Quarta"), QUINTA("Quinta"), SEXTA( "Sexta"), SABADO("Sábado"), DOMINGO("Domingo"); private final String dia; private DiaDaSemana(String dia) { this.dia = dia; } public String getDia() { return dia; } } Iterando entre os dias da semana • Podemos recuperar os valores do enum, por exemplo, para montar uma combobox. TesteDiasDaSemana package com.javabasico.enumeracoes; public class TesteDiasDaSemana { public static void main(String[] args) { for (DiaDaSemana d : DiaDaSemana.values()) { System.out.println("Valor -> " + d.getDia()); System.out.println("Nome -> " + d.name()); System.out.println("Índice -> " + d.ordinal()); System.out.println("----------------"); } } } Calendário • Crie a classe Calendario com os atributos DiaDaSemana (que já existe), mês e dia do mês (esses dois últimos ainda devem ser criados). – Considere o mês comercial de 30 dias. • Esse calendário deve ter um método imprimeData, com a data atual recuperada através dos enum’s. Assertion • Mecanismo para tratar exceções em situações específicas. • Um asserção é formada por uma condição booleana que quando verdadeira indica um bug. • As asserções não são identificadas pelo compilador, deve ser acionado explicitamente. Fluxo • • • • • ContaCorrente conta = null; // ... // recupera a conta do banco // ... // verifique se o objeto está carregado corretamente • assert conta != null; Detalhamento • Na última linha, a conta não pode ser null. • Caso seja, indica um bug da aplicação. • Lembre-se: a aplicação funcionará corretamente, pois por padrão o compilador não vê as asserções. Teste public class TesteDaAssercao { public TesteDaAssercao() { assert testeFalso(); System.out.println("1"); assert testeVerdadeiro(); System.out.println("2"); } private boolean testeVerdadeiro() { return true; } private boolean testeFalso() { return false; } public static void main(String[] args) { new TesteDaAssercao(); } } Compilação Execução normal Execução com assertion enabled • Somente agora, depois de usar o parâmetro –ea você pode verificar o erro da asserção