java.lang.Classオブジェクトがクラスを表すかどうかを確認するにはどうすればよいですか?java.lang.Classオブジェクトがクラスを表すかどうかを判定
isEnum(),isAnnotation() isInterface()などの方法で他のJavaタイプを判別できます。クラス型のメソッドが欠けています。
java.lang.Classオブジェクトがクラスを表すかどうかを確認するにはどうすればよいですか?java.lang.Classオブジェクトがクラスを表すかどうかを判定
isEnum(),isAnnotation() isInterface()などの方法で他のJavaタイプを判別できます。クラス型のメソッドが欠けています。
私はそれが排除の問題だと思う:
if (!c.isEnum() && !c.isInterface() && !c.isArray() && !c.isAnnotation() && !c.isPrimitive()) {
// It's a class
}
...あなたが新しい機能を列挙、注釈、のような(ジャワに追加されたときに、その定義を再検討する必要があるとして、非常に満足ではありません。 ..)。
クラスの場合は、内部、ローカル、匿名のものを排除する**トップレベルの**クラスであることを確認する必要があります。 – Andrew
@AndrewTobilko:それはOPがクラスと見なしたいものによって異なります。メンバークラス、ローカルクラス、および匿名クラスはすべてクラスです。 :-) –
* "これは、Javaに新しい機能が追加されたときにその定義を再訪する必要があるため、それほど満足のいくものではありません(enum、注釈など)。真実。しかし、逆に、とにかくこれを行う必要があるということです...あなたのコードがこの新しいJava機能に対応できるようにすることです。 –
マーカーインターフェイスを使用して、あなたの世界をより簡単にすることができます。あなたが何かを探しているときは、ただのクラスよりも少し具体的なものを探します。 – andreim