Java 5 - Novidades - PowerPoint PPT Presentation

About This Presentation
Title:

Java 5 - Novidades

Description:

Java 5 - Novidades Gerente de Tecnologia Vitor Costa – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 27
Provided by: Corn120
Category:

less

Transcript and Presenter's Notes

Title: Java 5 - Novidades


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()
ListltIntegergt lista new ArrayListltIntegergt() lista.add( new Integer( 100 ) ) int numero lista.get( 0 ).intValue()
5
Construindo Tipos Genéricos
public interface PilhaltEgt E pop() void push(E objeto) public class UtilPilha public static void limpar(Pilhalt?gt pilha) public static void imprimir (Pilhalt? extends Desenhogt 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()
ListltIntegergt lista new ArrayListltIntegergt() 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 lt array.length i) sum arrayi
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.IterableltEgt

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.303e23, 2.4397e6), VENUS (4.869e24, 6.0518e6), PLUTO (1.27e22, 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/whitepap
    ers/5.0_performance.html
  • StringBuilder e StringBuffer

26
Java 5 - Novidades
  • Gerente de Tecnologia Vitor Costa
Write a Comment
User Comments (0)
About PowerShow.com