2017-04-14 3 views
1

java.lang.Classオブジェクトがクラスを表すかどうかを確認するにはどうすればよいですか?java.lang.Classオブジェクトがクラスを表すかどうかを判定

isEnum(),isAnnotation() isInterface()などの方法で他のJavaタイプを判別できます。クラス型のメソッドが欠けています。

+0

マーカーインターフェイスを使用して、あなたの世界をより簡単にすることができます。あなたが何かを探しているときは、ただのクラスよりも少し具体的なものを探します。 – andreim

答えて

3

私はそれが排除の問題だと思う:

if (!c.isEnum() && !c.isInterface() && !c.isArray() && !c.isAnnotation() && !c.isPrimitive()) { 
    // It's a class 
} 

...あなたが新しい機能を列挙、注釈、のような(ジャワに追加されたときに、その定義を再検討する必要があるとして、非常に満足ではありません。 ..)。

+0

クラスの場合は、内部、ローカル、匿名のものを排除する**トップレベルの**クラスであることを確認する必要があります。 – Andrew

+0

@AndrewTobilko:それはOPがクラスと見なしたいものによって異なります。メンバークラス、ローカルクラス、および匿名クラスはすべてクラスです。 :-) –

+0

* "これは、Javaに新しい機能が追加されたときにその定義を再訪する必要があるため、それほど満足のいくものではありません(enum、注釈など)。真実。しかし、逆に、とにかくこれを行う必要があるということです...あなたのコードがこの新しいJava機能に対応できるようにすることです。 –

関連する問題