He leído en varios lugares, incluido here, que tener un comodín delimitado en un método de devolución es una mala idea. Sin embargo, no puedo encontrar una manera de evitarlo con mi clase. ¿Me estoy perdiendo de algo?Comodín limitado a Java en el tipo de retorno
La situación es como la siguiente:
class EnglishReaderOfPublications {
private final Publication<? extends English> publication;
EnglishReaderOfPublications(Publication<? extends English> publication) {
this.publication = publication;
}
void readPublication() {
publication.omNomNom();
}
Publication<? extends English> getPublication() {
return publication;
}
}
En resumen, una clase que yo quiero ser capaz de consumir cualquier publicación que se encuentra en alguna variante de Inglés. La clase necesita permitir el acceso a la publicación desde el exterior, pero, idealmente, los llamadores de getPublication
no desearían el resultado como un comodín delimitado. Estarían felices con Publication<English>
.
¿Hay alguna manera de evitar esto?
El artículo 28 en "Java eficaz" de Joshua Bloch recomienda: "No use tipos de comodines como tipos de devolución". –