2011-08-11 7 views
12

私はオブジェクトを持っています。私はそれが型enumであるかどうかを確認したい。これを行うには2つの方法があります。class.isEnum()またはinstanceof Enumを使用する方が良いですか?

object.getClass().isEnum() 

または

object instanceof Enum 

より良い1ですか?私の意見object instanceof Enum

+2

「より良い」とは、「読みやすく」「速く走る」などを意味しますか? – templatetypedef

+0

@templatetypedefほとんどの場合、パフォーマンスは読みやすくなります。 –

+0

オブジェクトが列挙型かどうかを判断する必要がある場合は、質問する必要がある質問は「なぜこのひどいデザインを使用していますか」です。 – DwB

答えて

20

はいくつかの理由のためのより良いです:

  • ここで尋ねているものは非常に明白です:「これは、列挙型ですか」?
  • それはNullPointerExceptionそれは短いです
  • objectnullであれば、それだけでfalseと評価されます)リスクはありません。

私はClassオブジェクトにではなく、具体的なインスタンスへのアクセスを持っている場合、私はisEnum()を使用するために参照してくださいね唯一の理由は次のようになります。

+0

+1を参照してください。私はループでこれをやっているのですが、それが問題なのかどうかは分かりませんでした。 –

+1

パフォーマンス面では、 'instanceof'も高速に動作します(テスト対象のクラスによって異なりますが、 'isEnum'より33%速い、最も速いのは約450%速い)。 isEnum:2691826 instanceof:658774 – ty1824

+0

@ ty1824 - 素晴らしい。統計は私が探していた正確なものです –

関連する問題