1
以下のメソッドgetFirstFromEnum
では、返されたenum
型が引数として渡されたクラスであることは常に真です。それを考慮して、とにかく私はそれを呼び出すたびにキャスティングを避けるためにメソッドを変更することができますか?一般的な戻り値でのキャストを避けるにはどうすればよいですか?
private <E extends Enum<?>> Enum<?> getFirstFromEnum(Class<E> enumClass) {
return enumClass.getEnumConstants()[0];
}
EnumA foo = (EnumA) getFirstFromEnum(EnumA.class); //can I change method to avoid casting?
はあなたが私に交換の必要性を説明しようとすることができ、 'が伸びる>'と '' 拡張します>。彼らはどちらもうまくいくようです –
user2651804
うーん...正直なところ、私は分かりません。私はできるだけ強くタイプする習慣があります。しかし、あなたは正しいです:ここでは必須ではありません。それは構文的な砂糖のように見えます。私はこの部分をそのまま維持するように更新しました。 – davidxxx
@ user2651804:これは 'java.lang.Enum'がなぜ' Enum> 'または' Enum 'の代わりに' Enum > 'として定義されたのかという疑問に終わります。一見すると、その背後に重要性があるように見えますが、実際にはそれは完全に機能しません。 Comparable >の代わりに 'Comparable 'として定義されているjava.lang.Comparableによって示されているように、... –
Holger