-1

好奇心から、static final int SIZEフィールドを持つクラスからフィールドを印刷しようとしていました。「それを持つクラス」を取得するために、すべてのクラスを取得しようとしました。しかし、常に長さ 0 の配列を返すことに気付きました。

ドクター曰く

この Class オブジェクトにパブリック メンバー クラスまたはインターフェイスがない場合、このメソッドは長さ 0 の配列を返します。この Class オブジェクトがプリミティブ型、配列クラス、または void を表す場合、このメソッドは長さ 0 の配列も返します。

しかし、オブジェクトはプリミティブとしてリストされていません。オブジェクトはどういうわけか無効と見なされますか?

では、どうすれば
すべてのクラスの配列を取得できますか?
および
- これがオブジェクトに対して機能しないのはなぜですか?

4

1 に答える 1

8

このメソッドは、このメソッドが呼び出されたクラス オブジェクトのすべての内部クラス (本体内で宣言されたクラス)getClasses()の配列を返します。ほとんどのクラスでは、これは常にゼロです。利用可能なすべてのクラスの結合ではありません。クラス ローダーを見てみましょう。Java には、利用可能なすべてのクラスを単純に生成するメソッドはありません。この情報を提供する特定のクラス ローダーを使用する必要があります。

于 2013-01-15T07:32:41.403 に答える