Generics - Não consigo instanciar o tipo.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 3685
Localização: São Paulo
Offline

sergiotaborda wrote:
ViniGodoy wrote:
sergiotaborda wrote:Se E é uma interface como fica toda esta historia ? O new tem que saber que está chamando uma interface ?


O compilador teria a capacidade de saber no exato momento que você tentasse fazer:



O compilador então acharia dentro do código de classe algo como:


E geraria um erro de compilação.


Sim, no C++ onde ha substuição sim (é gerado um novo codigo com E subtituido)
Eu estava falando em java em que não ha substituição/geração de codigo.

Pior, a classe pode ser abstrata e o uso de interface poderia ser feito noutra classe que nem sequer está no projeto. E aí ?


Bastaria na assinatura da classe parametrizada dizer que o tipo E tem de ser concreto. Adicionando recursos na linguagem, TODOS os problemas que voces citaram, no caso de poder dar new em E, somem, porem aparecem problemas de compatibilidade se voce for permitir o uso dessas classes sem generics.

http://blog.caelum.com.br


Arquitetura e Design de Software: uma visão sobre a plataforma java
[Email] [WWW]
Mark_Ameba
Forum Spammer
[Avatar]

Membro desde: 11/04/2007 18:18:20
Mensagens: 3311
Localização: São Paulo/SP
Offline

ViniGodoy wrote:
Será que adicionar tanta complexidade vale a pena? Já vi muitas coisas interessantíssimas que são possíveis com a metaprogramação, que nem sequer passam nos sonhos dos programadores java... mas entre essas coisas, encontram-se erros obscuros também...



Cara, pode citar um exemplo?
Algo que passe dos nossos sonhos o.0
Por acaso ele não pensa sózinho, pensa? ^^




Projeto Mark-Utils no Google Code!

Ainda usando DefaultTableModel no seu projeto?? PARE! Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!

Tower Defense Game - RC 3 - 19/02/2010
MarkyBlog: http://markyameba.wordpress.com : Swing & Reflection.

Faça perguntas inteligentes
Programar telas Swing na mão nunca foi tão fácil: MigLayout!
Totalmente GridBagLayout (Joke)

Develop games is fantastic, with words you can make worlds!!!

It's more useful to have a fun game with old graphics, than a boring game with good graphics.

Quer aprender a fazer jogos? : Créditos ao ViniGodoy

Each of their nuggets of wisdom contracted to a sound bite:

Joshua Bloch: Write Lots of Code
Chet Haase: Don't Put Your Entire Application in One Method
Masood Mortazavi: Start Simple and Keep Learning
Cay Horstmann: First, Don't Panic
[WWW] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 9578
Localização: Curitiba
Offline

sergiotaborda wrote:
Sim, no C++ onde ha substuição sim (é gerado um novo codigo com E subtituido)
Eu estava falando em java em que não ha substituição/geração de codigo.


O fato de não haver substituição no resultado final não implica em dizer que o compilador não faça, ou não saiba como ficaria a classe durante a compilação. Aliás, ele sabe muito bem, tanto que valida os seus sets. O compilador gera bastante código também, em especial, faz os casts automaticamente. Os casts aparecem num bytecode descompilado, por exemplo.

sergiotaborda wrote: Pior, a classe pode ser abstrata e o uso de interface poderia ser feito noutra classe que nem sequer está no projeto. E aí ?


Você diz a classe que será substituída em T? Nesse caso, não poderia haver new, concorda? Como dar new numa classe abstrata?

Se ela só "vem de fora", não haverá new T(). E daí o código compila.

Mas vc tem razão. Com type erasure, é impossível implementar new T.

This message was edited 1 time. Last update was at 11/04/2008 19:39:24


Desenvolve jogos de computadores?
http://www.pontov.com.br

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295


Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 9578
Localização: Curitiba
Offline

Mark_Ameba wrote:Cara, pode citar um exemplo?
Algo que passe dos nossos sonhos o.0
Por acaso ele não pensa sózinho, pensa? ^^


Não, ainda não pensa sozinho. Mas que tal essa biblioteca gráfica matemática que deixa vc construir gráficos assim:

Essa notação é mais próxima da matemática, concorda?

Essa ainda foi fácil. Ou que tal uma função que transforme um número binário em decimal em tempo de compilação?


Existem APIs para processamento de XML, como a rapidxml, que usa a meta-programação para atingir uma performance absurda.

Na minha API, tenho classes que lidam com vetores matemáticos. Elas aceitam qualquer coisa que tenha o operador [] sobrecarregado para oferecer 3 índices, com esses 3 valores. Isso inclui, arrays primitivos e outras classes. Isso garante que haja integração com outras APIs, com alto grau de segurança, sem a necessidade de casts e sem a necessidade de eu conhecer essas APIs ou declarar uma interface.



Na verdade, não passam pelos sonhos dos programadores java não pq eles seriam menos capazes. Por favor, eu não quis ser pejorativo.
Mas sim, pq a linguagem simplesmente não dá mecanismos para que essas coisas sejam sequer possíveis.

Então, os sonhos deles se concentram em outros lugares.
Aliás, a reflexão também faz coisas que não passa pela cabeça dos programadores C++ também.
No mundo C++ existe o RTTI, que é limitadíssimo e muito lento.

This message was edited 5 times. Last update was at 11/04/2008 18:50:01


Desenvolve jogos de computadores?
http://www.pontov.com.br

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295


Trabalhe com JTable de uma forma inteligente com o ObjectTableModel e com o Auto-Filtro!
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team