Genérico com dois tipos possíveis

2 respostas
Nykolas_Lima

Estou criando uma interface:

public interface X <E extends A> {
...
}

O meu genérico “E” tem que ser do tipo “A”.
Mas eu gostaria de dizer que o “E” tem que ser do tipo “A” OU “B”, consigo fazer isso?

Algo como:

public interface X <E extends A & B> {
...
}

2 Respostas

A

Até onde eu sei não é possível, mas fiquei com uma dúvida:

Se A e B são dois tipos completamentes distintos… como utilizaria uma variável do tipo E dentro da classe?

Imagino que, por exemplo: A = String, B = Number

Os únicos métodos disponíveis seriam a intersecção de métodos existentes entre String e Number… logo seria mais simples usar Object de vez.

No seu caso são duas classes totalmente distintas mesmo? Não há uma interface comum?

Nykolas_Lima

AbelBueno:
Até onde eu sei não é possível, mas fiquei com uma dúvida:

Se A e B são dois tipos completamentes distintos… como utilizaria uma variável do tipo E dentro da classe?

Imagino que, por exemplo: A = String, B = Number

Os únicos métodos disponíveis seriam a intersecção de métodos existentes entre String e Number… logo seria mais simples usar Object de vez.

No seu caso são duas classes totalmente distintas mesmo? Não há uma interface comum?

Tenho uma entidade A que pode ter relacionamento com a B ou C.

No caso o genérico seria a classe B ou C, porque na tabela A o campo de relacionamento com as outras duas é o mesmo, dependendo de um tipo ele é com uma ou outra.

É um sistema legado, por isso as coisas estão assim.

Criado 8 de junho de 2011
Ultima resposta 9 de jun. de 2011
Respostas 2
Participantes 2