brunohansen
gcobr:
Que eu saiba, isso não vai compilar:
interface IF1 <TipoBase, IF extends IF2<TipoBase, ? extends IF1<TipoBase, IF>>> {
}
Nem isso:
interface IF2<TipoBase, IF extends IF1 <TipoBase, ? extends IF2<TipoBase, IF>>> {
}
Porém compila!
machinesque
Em Java não existe maneira de fazer uma herança multipla que você esta tentando fazer
com dois extends!
brunohansen
machinesque:
Em Java não existe maneira de fazer uma herança multipla que você esta tentando fazer
com dois extends!
Isso não é herança múltipla. É generics!
Esse código compila e funciona. O único problema é aquela chama ali!
machinesque
eu acho que você usaria o seguinte:
void chamaMetodo(TipoBase _parametro){
_parametro = if1.metodo(this); (AQUI!)
}
e ali no this voce precisa passar algum dos parametros globais, da classe que possui o
metodo chamaMetodo.
Algo assim this.parametro
Acho que seria isso;
JimMorrison
public class Generics<TipoBase, IF extends IF1> implements IF2 {
private IF if1;
public static void main(String[] args){
Generics<String, IF1> gen = new Generics();
gen.setIf1(new IF1(){
public void metodo(IF2 _parametro) {
_parametro = new IF2(){ public String toString(){return "teste";}};
System.out.println(_parametro);
}});
gen.chamaMetodo("teste");
}
void chamaMetodo(TipoBase _parametro){
getIf1().metodo(this);
}
public IF getIf1() {
return if1;
}
public void setIf1(IF if1) {
this.if1 = if1;
}
}
interface IF1 <TipoBase, IF extends IF2<TipoBase, ? extends IF1<TipoBase, IF>>> {
void metodo(IF _parametro);
}
interface IF2<TipoBase, IF extends IF1 <TipoBase, ? extends IF2<TipoBase, IF>>>{}
a idéia é essa?
brunohansen
public class Generics<TipoBase, IF extends IF1> implements IF2 {
O problema com o código acima é que vc não tipou IF1 nem IF2.
Se for para usar sem tipar eu tiro o generics e tipo tudo para object!
Só que ai o código fica meio ruim “Fracamente tipado”
public class Generics<TipoBase, IF extends IF1<Tipar aqui>> implements IF2<Tipar aqui> {