Embed
Email

Java 5 - Novidades

Document Sample
Java 5 - Novidades
Shared by: HC111211041235
Categories
Tags
Stats
views:
0
posted:
12/10/2011
language:
pages:
26
Java 5 - Novidades





Gerente de Tecnologia – Vitor Costa

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...

Tipos Genéricos



 JSR-14;

 Sintaxe mais limpa – evita casts;

 Verificação em tempo de compilação;

 Equivalente ao Template em C++, será?

Tipos Genéricos



 Antes:

List lista = new ArrayList();

lista.add( new Integer( 100 ) );

int numero = ( (Integer) lista.get( 0 ) ).intValue();







 Agora:

List lista = new ArrayList();

lista.add( new Integer( 100 ) );

int numero = lista.get( 0 ).intValue();

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) { }

}

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;

Autoboxing/unboxing



 Antes:

List lista = new ArrayList();

lista.add( new Integer( 100 ) );

int numero = lista.get( 0 ).intValue();







 Agora:

List lista = new ArrayList();

lista.add( 100 );

int numero = lista.get( 0 );

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”);

}

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;

Enhanced for Loop - array



 Antes:

int sum = 0;

for(int i = 0; i ;

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;

Covariância



public class SuperClasse {

public JTextField getCampoTexto() {

return new JTextField();

}

}



public class SubClasse extends SuperClasse {

public JPasswordField getCampoTexto() {

return new JPasswordField();

}

}

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;

Tipos Enumerados



public enum Semaforo {

VERMELHO, AMARELO, VERDE

};



/* ... */



Semaforo semaforo = Semaforo.VERDE;

if(semaforo == Semaforo.VERMELHO) { }



switch(semaforo) {

case(Semaforo.VERDE):

// ...

}

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);

}

}

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;

Static Imports



 Antes:

double r = Math.cos(Math.PI * theta);







 Agora:

import static java.lang.Math.*

// import static java.lang.Math.PI

// import static java.lang.Math.cos



double r = cos(PI * theta);

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;

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;

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);

}

}

Leituras e escritas formatadas



 JSR-51;

 Facilidades para leitura e escrita de textos

formatados;

 Leitura: Scanner, evolução do StringTokenizer;

 Escrita: printf em Java;

Leituras e escritas formatadas



 Escrita:

int age = 28;

String name = “Williamis”;

System.out.printf("%s %d", name, age);







 Leitura:

Scanner reader = new Scanner(System.in);

int n = reader.nextInt();

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



 StringBuilder e StringBuffer;

Java 5 - Novidades





Gerente de Tecnologia – Vitor Costa


Related docs
Other docs by HC111211041235
EVOLUCION DEL CENTRO DE COMPUTO
Views: 0  |  Downloads: 0
Unit 3E: Magnets and Springs
Views: 4  |  Downloads: 0
jun22
Views: 70  |  Downloads: 0
GNC
Views: 11  |  Downloads: 0
Lentekriebels
Views: 3  |  Downloads: 0
1a Lista de Exerc�cios de Estat�stica
Views: 0  |  Downloads: 0
Apresenta��o do PowerPoint
Views: 0  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!