java-se - java无界通配符的应用?
PHP中文网
PHP中文网 2017-04-17 17:33:11
0
1
347
enum Search
{
    HITHER , YON
}

public class UpCastEnum
{
    public static void main(String[] args)
    {
        Search[] vals = Search.values() ;
        Enum e = Search.HITHER ;

        for(Enum en : e.getClass().getEnumConstants())
        {
        }
        /*
        如果改写成这样就会报错
        Class<?> clazz = e.getClass() ;
        for(Enum en : clazz.getEnumConstants())
        {
        }
        */
    }
}

一开始我以为是编译器的自动优化, 于是将jdk版本从1.8降回了1.6, 发现未注释的代码仍然编译正确, 这个是怎么回事呢? 一样是无界通配符, 只是添加了中间变量, 产生的结果却不同呢?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(1)
大家讲道理

これは問題ありません

リーリー

<? extends Enum> が指定されている場合、Class<T> で定義された T[] getEnumConstants() は、型 T の値 (上記の例では Enum) を明確に返すことができます。指定しない場合、タイプは Object であるため、

にすることができます。 リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート