モジュール jdk.dynalink
パッケージ jdk.dynalink.beans

クラスStaticClass

  • すべての実装されたインタフェース:
    Serializable

    public final class StaticClass
    extends Object
    implements Serializable
    クラスの静的メンバー(静的メソッド、プロパティおよびフィールド)へのアクセス、およびStandardOperation.NEW操作を使用したインスタンスの構築を許可するオブジェクト。 Dynalinkでは、Classオブジェクトは特別に扱われず、通常のJavaオブジェクトとして機能します。たとえば、GET:PROPERTY:superclassをプロパティ・ゲッターとして使用してclazz.getSuperclass()を起動できます。 一方、Classオブジェクトを使用してクラスの静的メンバーにアクセスしたり、NEWを使用してクラスの新規インスタンスを作成したりすることはできません。 これは、JavaでのClassオブジェクトの動作と一貫性があります。Javaでは、new BitSet.class()ではなくnew BitSet()のように記述します。 同様に、System.class.outではなくSystem.outを記述します。 これは、クラス名をコンストラクタとして使用し、StaticClassによって具体化される静的メンバーの名前空間を使用する側面です。

    このクラスのオブジェクトは、BeansLinkerによって特別なオブジェクトとして認識され、そのオブジェクトの操作は、表されるクラスの静的メンバーに対してリンクされます。 "class"合成プロパティが追加で認識され、Java System.classがSystemクラスのClassオブジェクトに評価されるのと同様に、Java Classオブジェクトが戻されます。 逆に、BeansLinkerを介して公開されるClassオブジェクトは、StaticClassオブジェクトを返す"static"合成プロパティを公開します(Javaではこれに相当するものはありません)。

    要約すると、このクラスのインスタンスは、静的メンバーの名前空間として機能し、クラスのコンストラクタとして機能します。これは、Java言語でクラス名を指定する場合とほぼ同じです。ただし、Javaではこれは単なる構文要素であり、Dynalinkでは実際のオブジェクトとして表されます。

    Java配列型を表すStaticClassオブジェクトは、単一のint引数をとるコンストラクタとして機能し、指定されたサイズの配列を作成します。

    クラスに複数のコンストラクタがある場合、StaticClassStandardOperation.NEWは最も適用可能なコンストラクタを選択しようとします。 BeansLinker.getConstructorMethod(Class, String)を介して明示的な署名を持つコンストラクタを選択するためのメカニズムを言語で公開できます。

    関連項目:
    直列化された形式
    • メソッドの詳細

      • forClass

        public static StaticClass forClass​(Class<?> clazz)
        指定されたクラスのStaticClassインスタンスを取得します。
        パラメータ:
        clazz - 静的ファセットがリクエストされるクラス。
        戻り値:
        指定されたクラスを表すStaticClassインスタンス。
      • getRepresentedClass

        public Class<?> getRepresentedClass()
        表されるJavaクラスを返します。
        戻り値:
        表されるJavaクラス。