De efectiva de Java Segunda edición, artículo 28: "No utilice los tipos de comodines como tipo de retorno En lugar de proporcionar una flexibilidad adicional para los usuarios ya que obligaría a ellos. para usar tipos de comodines en el código del cliente ".¿Por qué TypeToken de guayaba <T> .getRawType() devuelven Clase <? super T> en lugar de clase <T>
public final Class<? super T> getRawType()
Me acaban de llegar a enfrentarse con comodines genéricos para entender la última advertencia fundido sin control que tengo en un trozo de código que estoy escribiendo y yo no entiendo por qué getRawType() devuelve un tipo de comodín.
class Base<T>{}
class Child<T> extends Base<T>{}
public <C> void test (TypeToken<? extends Base<C>> token) {
Class<? extends Base<C>> rawType = (Class<? extends Base<C>>) token.getRawType();
}
que tienen que desechar token.getRawType(), ya que devuelve un
Class<? super ? extends Base<C>>
Gracias @newacct, esta es la cosa No entendí, pero tiene sentido que ArrayList extienda ArrayList. La clase super T> es descriptiva de lo que está devolviendo aunque, en lo que respecta al código del cliente, también puede devolver la clase >, ya que siempre tendrá que emitirla. –
MikeB