To com um problema e não consigo resolver… gostaria de pedir uma ajuda ai de vcs.
Estou fazendo uma sobrecarga de um método, mas gera uma msg de erro quando o parametro é uma collection (List, ArrayList etc).
Andei lendo na internet e arrumei uma solução. Coloquei o código abaixo para ilustrar o problema.
Muito obrigado!
[code]
import java.util.List;
public class Teste_Sobrecarga {
public class TipoA {
boolean tipoAa;
}
public class TipoB {
double tipoBa;
String tipoBb;
float tipoBc;
}
void metodo(List<TipoA> listTipoA) {
}
void metodo(List<TipoB> listTipoB) {
}
}[/code]
Mensagem de erro:
[color=red]“Method metodo(List<Teste_Sobrecarga.TipoB> ) has the same erasure metodo(List ) as another method in type Teste_Sobrecarga”[/color]
Nao sei se o exemplo ficou pouco ilustrativo, mas eu preciso fazer uma sobrecarga de dois metodos (o parametro de entrada e de saida são diferentes mas o nome do método é igual. Quando eu faço isso com parametros que não são collections, funciona… quando coloco collection, da esse erro.
Exemplo com collection:
[code] List Metodo(List listTipoA) {
List<TipoA> tipoA = new ArrayList<TipoA>();
return tipoA;
}
List<TipoB> Metodo(List<TipoB> listTipoB) {
List<TipoB> tipoB = new ArrayList<TipoB>();
return tipoB;
}
[/code]
Exemplo sem collection. ( repare que a única diferença é que coloquei o parametro de entrada e saida como List )
[code] TipoA Metodo(TipoA listTipoA) {
TipoA tipoA = new TipoA();
return tipoA;
}
TipoB Metodo(TipoB listTipoB) {
TipoB tipoB = new TipoB();
return tipoB;
}[/code]
O seu problema esta relacionado com a compilação na hora dos erasures entrarem em ação para identificar qual será o cast utilizado pelos tipos genericos, te guiando para o modo mais simples e fácil, como vc veio do C++ esta acostumado em criar várias classes em arquivos headers, digamos que isso em java não é legal, por alguns motivos, voltando, separe cada classe em um arquivo .java diferente, no Sobrecarga use generics de nivel de classe para serem utilizados dentro da tipagem da List, acredito que como vc manja de slt não tera problemas. Esse é um modo fácil de arrumar o seu problema, aconselho estudar generics em java para entender melhor o que esta acontecendo, assim você entenderá formas dierentes de abordar esse mesmo problema.
No exemplo acima, eu coloquei uma classe dentro da outra somente para ilustrar… não faço isso quando estou programando.
Li essa sua frase 9980980 vezes e nao sei ainda o que significa: "no Sobrecarga use generics de nivel de classe para serem utilizados dentro da tipagem da List "
Vou dar uma estudada em generics para entender melhor sua sugestão… só queria que me respondesse uma coisa que nao ficou muito claro pra mim: É possivel resolver esse “problema” sem gambiarras?! eheh