No es posible y apenas veo valor en él. Usas genéricos para restringir el tipo, p. Ej. en colecciones. Con el operador or
sabes tanto sobre el tipo que conoces del supertipo más específico de ambos, Object
en este caso. Entonces, ¿por qué no usar Object
?
Hipotético:
List<E extends String or Number> list = //...
¿Cuál es el tipo de list.get(0)
? ¿Es String
oNumber
? Pero no puedes tener una variable de ese tipo. No puede ser String
, no puede ser Number
- solo puede ser ... Object
.
ACTUALIZACIÓN: Ya que ha cambiado su ejemplo en cuestión:
<Integer or Float>
¿Por qué no simplemente decir:
<Number>
? Tenga en cuenta que Number
tiene métodos que le permiten extraer fácilmente floatValue()
y intValue()
. ¿Realmente necesitas el tipo exacto?
Tenga en cuenta que puede utilizarand
operador:
<E extends Serializable & Closeable>
Y eso tiene mucho sentido - se puede utilizar variable de tipo E
donde sea se necesita Serializable
o Closeable
. En otras palabras, E
debe extender tanto Serializable
como Closeable
. Ver también: Java Generics Wildcarding With Multiple Classes.
¿Por qué quieres hacer eso? – Pshemo
Parecen tiza y queso. El requisito no tiene ningún sentido para mí en absoluto. ¿Las entidades matemáticas Strings como Numbers se cierran sobre ciertas operaciones? No pensé. – duffymo
Precisamente porque String es final, una o más soluciones se necesitarían aún más, porque no podríamos resolverlo con la alternativa que propongo – Whimusical