Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Fitorinaudo

Tipos Genéricos

Recommended Posts

Fitorinaudo

Pessoal, alguem me pode explicar muito rapidamente o que são tipos genéricos e para que servem exactamente? Preciso mesmo de saber isso Sff. ;)

Share this post


Link to post
Share on other sites
pedrotuga

Genéricos é uma sintaxe que permite passar o tipo de dados a construtores e métodos de estruturas de dados que podem alojar vários tipos de dados.

A utilidade é que permitem que permitem às estruturas de dados armazenar um tipo de objecto genérico (daí o nome) mas ao mesmo tempo permitem que o compilador confira se há consistencia nos tipos pelo teu programa fora.

Tirado da wikipedia:

Exemplo sem genéricos:

List v = new ArrayList();

v.add("test");

Integer i = (Integer)v.get(0);

O ArrayList sempre aceitou qualquer objecto que herdasse do tipo Object, ou seja, todos os tipos. A diferença é que quando se adicionava, perdia-se a informação sobre o tipo. Tinha que se recorrer a um cast como mostra o exemplo. Mas isto é basicamente dizer ao compilador para não se preocupar com a compatibilidade de tipos, que em runtime se converte no que for preciso. Ora, não é possível converter a string "teste" num Integer, pelo qu ex

emplo acima dá um erro em runtime, apesar de compilar.

Com genéricos, passas ao compilador, a infromação sobre que tipo estas a utilizar:

List<String> v = new ArrayList<String>();

v.add("test");

Integer i = v.get(0); // (type error) Compile time error

Aqui, quando chegas À ultima linha já disseste que tipo é que vais meter em cada elemento do ArrayList, pelo já não é possível compilares este código. O compilador não te deixa dazres uma atribução de um valor que já sabe que é to tipo String a uma variável que já sabe que é do tipo Integer.

Ou seja, é um mecanismo de type-safety para estruturas de dados.

Fonte:

http://en.wikipedia.org/wiki/Generics_in_Java

Isto foi novidade no java 5, os programadores de java hoje em dia interrogam-se como é que se escrevia java antes dos genéricos.

Share this post


Link to post
Share on other sites
Fitorinaudo

Portanto, por exemplo um array list pode conter dados de vários 'Tipos' certo? Isto é, de classes diferentes, Certo? O qq difere um array list dum vector exactamente? É que agora começámos a usar a biblioteca do java e isso e estou um bocado perdido. ArrayList() é uma classe?

Peço desculpa pela quantidade de perguntas...

Obrigado desde já

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.