Ambiguidade na sobrecarga

1 resposta
J

gente … eu nun entendo pq o código abaixo dá erro de ambiguidade

class D1 {}


class GFC211 extends D1{} 

class GFC212 extends GFC211 {}


public class GFC213 extends GFC212 {

static void m(GFC213 x, D1 y) {System.out.print("GFC212,GFC212");}
static void m(GFC212 x, GFC212 y) {System.out.print("GFC211,GFC213");}
public static void main(String[] args) {
GFC213 gfc213 = new GFC213(); m(gfc213, gfc213);
}}

alguem pode me ajudar ai?

valew

1 Resposta

J

bom… está dando erro de ambiguidade porque um GFC213 é um GFC212, e um GFC212 é um GFC211, e um GCF211 é um D1, logo um GFC213 é um D1, portanto, ele se perde na hora de chamar o método.

uma sugestão de correção seria fazer cast na hora de chamar o método…como algo do tipo:

m(gfc213, (D1)gfc213);
m((GFC212)gfc213, (GFC212)gfc213);

[]'s

Criado 20 de janeiro de 2009
Ultima resposta 20 de jan. de 2009
Respostas 1
Participantes 2