A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java 5 - Novidades Gerente de Tecnologia – Vitor Costa.

Apresentações semelhantes


Apresentação em tema: "Java 5 - Novidades Gerente de Tecnologia – Vitor Costa."— Transcrição da apresentação:

1 Java 5 - Novidades Gerente de Tecnologia – Vitor Costa

2 Novidades Tipos genéricos; Autoboxing/unboxing; Enhanced for Loop; Covariância; Tipos enumerados; Static Imports; Annotations (Metadata); Argumentos variáveis; Leituras e escritas formatadas; Outras novidades...

3 Tipos Genéricos JSR-14; Sintaxe mais limpa – evita casts; Verificação em tempo de compilação; Equivalente ao Template em C++, será?

4 Tipos Genéricos Antes: Agora: List lista = new ArrayList(); lista.add( new Integer( 100 ) ); int numero = ( (Integer) lista.get( 0 ) ).intValue(); List lista = new ArrayList (); lista.add( new Integer( 100 ) ); int numero = lista.get( 0 ).intValue();

5 Construindo Tipos Genéricos public interface Pilha { E pop(); void push(E objeto); } public class UtilPilha { public static void limpar(Pilha pilha) { } public static void imprimir (Pilha pilha) { } }

6 Autoboxing/unboxing JSR-201; Elimina a conversão manual entre os tipos primitivos e suas “wrapper” classes; Código mais simples de ler; Facilita a integração dos tipos genéricos;

7 Autoboxing/unboxing Antes: Agora: List lista = new ArrayList(); lista.add( new Integer( 100 ) ); int numero = lista.get( 0 ).intValue(); List lista = new ArrayList (); lista.add( 100 ); int numero = lista.get( 0 );

8 Autoboxing/unboxing Se A é igual a B e B é igual a C, então A é igual a C; Não é mais verdade após Java 5;  Integer i1 = new Integer( 100 ); int i2 = 100; Integer i3 = new Integer( 100 ); if (i1 == i2 && i2 == i3) { System.out.println(“OK”); if (i1 != i3) System.out.println(“Xiiiii”); }

9 Enhanced for Loop JSR-201; Conhecido como for-each em outras lings.; Reduz a repetição de código para iterar sobre arrays ou coleções; Melhor usado com tipos genéricos;

10 Enhanced for Loop - array Antes: Agora: int sum = 0; for(int i = 0; i < array.length; i++) { sum += array[i]; } int sum = 0; for(int i : array) { sum += i; }

11 Enhanced for Loop - coleção Antes: Agora: for(Iterator i = c.iterator(); i.hasNext(); ) { String str = (String) i.next(); sb.append(str); } for(String str : c) { sb.append(str); }

12 Enhanced for Loop Não substitui os loops onde é necessário a utilização de um contador; Não se aplica às iterações onde se deseja remover ou substituir os elementos; Pode ser mais lento quando usado em conjunto com coleções muito grandes; Suporte do “Enhanced for Loop” a qualquer coleção: java.lang.Iterable ;

13 Covariância Parte da JSR-14 (tipos genéricos); Capacidade de uma subclasse sobrescrever um método trocando seu tipo de retorno por uma subclasse do tipo de retorno original;

14 Covariância public class SuperClasse { public JTextField getCampoTexto() { return new JTextField(); } public class SubClasse extends SuperClasse { public JPasswordField getCampoTexto() { return new JPasswordField(); }

15 Tipos Enumerados JSR-201; Permite criação de tipos enumerados diretamente na linguagem (sem ter que recorrer a padrões); Adiciona um novo termo às palavras reservadas: enum ;

16 Tipos Enumerados public enum Semaforo { VERMELHO, AMARELO, VERDE }; /*... */ Semaforo semaforo = Semaforo.VERDE; if(semaforo == Semaforo.VERMELHO) { } switch(semaforo) { case(Semaforo.VERDE): //... }

17 Tipos Enumerados public enum Planet { MERCURY (3.303e+23, 2.4397e6), VENUS (4.869e+24, 6.0518e6), PLUTO (1.27e+22, 1.137e6); private final double mass, radius; Planet(double mass, double radius) { this.mass = mass; this.radius = radius; } private double mass() { return mass; } private double radius() { return radius; } public static final double G = 6.67300E-11; double surfaceGravity() { return G * mass / (radius * radius); }

18 Static Imports JSR-201; Importa as funções e variáveis públicas estáticas de outra classe; Substitui o “Constant Interface Antipattern”; Pode facilitar o uso destas funções e variáveis, mas não devemos abusar;

19 Static Imports Antes: Agora: double r = Math.cos(Math.PI * theta); import static java.lang.Math.* // import static java.lang.Math.PI // import static java.lang.Math.cos double r = cos(PI * theta);

20 Annotations (Metadata) JSR-175; Permite que você defina e use seus próprios tipos de anotação; Podem ser acessadas via reflexão; Não alteram a semântica do programa, mas pode afetar como o programa é tratado por ferramentas e bibliotecas; Programadores típicos nunca precisarão definir um tipo Annotation;

21 Argumentos Variáveis JSR-65; Permite a definição de métodos com número de argumentos variáveis; Elimina a necessidade de empacotar listas em um array; Só poder ser utilizado como última variável em um método;

22 Argumentos Variáveis public class Teste { public void imprimir(Object... objetos) { for(Object objeto : objetos) System.out.println(objeto); } public static void main(String[] args) { imprimir(“string”, new Teste(), 50, 3.2); }

23 Leituras e escritas formatadas JSR-51; Facilidades para leitura e escrita de textos formatados; Leitura: Scanner, evolução do StringTokenizer ; Escrita: printf em Java;

24 Leituras e escritas formatadas Escrita: Leitura: int age = 28; String name = “Williamis”; System.out.printf("%s %d", name, age); Scanner reader = new Scanner(System.in); int n = reader.nextInt();

25 Outras Novidades... Utilitário para programação concorrente; RMI: não necessita mais do rmic; Algumas adições na API JDBC; Muitas melhorias no desempenho: http://java.sun.com/performance/reference/whitepapers/5.0_performance.html http://java.sun.com/performance/reference/whitepapers/5.0_performance.html StringBuilder e StringBuffer;

26 Java 5 - Novidades Gerente de Tecnologia – Vitor Costa


Carregar ppt "Java 5 - Novidades Gerente de Tecnologia – Vitor Costa."

Apresentações semelhantes


Anúncios Google