Non è possibile e difficilmente vedo alcun valore. Usi i generici per limitare il tipo, ad es. in collezioni. Con l'operatore or
tu sai tanto del tipo quanto sai del supertipo più specifico di entrambi, Object
in questo caso. Allora perché non usare solo Object
?
ipotetico:
List<E extends String or Number> list = //...
Qual è il tipo di list.get(0)
? È String
oNumber
? Ma non puoi avere una variabile di questo tipo. Non può essere String
, non può essere Number
- può essere solo ... Object
.
UPDATE: Dal momento che hai cambiato il tuo esempio in questione:
<Integer or Float>
perché non ti basta dire:
<Number>
? Notare che Number
ha metodi che consentono di estrarre facilmente floatValue()
e intValue()
. Hai davvero bisogno del tipo esatto?
Si noti che è possibile utilizzare and
operatore:
<E extends Serializable & Closeable>
E che rende perfettamente senso - è possibile utilizzare variabile di tipo E
in cui o è necessario Serializable
o Closeable
. In altre parole, E
deve estendere sia Serializable
sia Closeable
. Vedi anche: Java Generics Wildcarding With Multiple Classes.
fonte
2012-07-24 14:44:50
perché vuoi farlo? – Pshemo
Sembrano gesso e formaggio. Il requisito non ha alcun senso per me. Le stringhe sono entità matematiche come i numeri, chiuse su determinate operazioni? Non pensavo – duffymo
Proprio perché String è definitivo, una soluzione o sarebbe necessaria ancora di più, perché non potremmo risolverlo con l'alternativa che propongo. – Whimusical