モジュール 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を使用してクラスの新しいインスタンスを作成することはできません。 これは、ClassオブジェクトがJavaでどのように動作するかと一貫しています: Javaでは、new BitSet.class()の代わりに、例えばnew BitSet()と記述します。 同様に、System.class.outではなくSystem.outを記述します。 StaticClassが実装している静的メンバーのネームスペースと、コンストラクタとしてクラス名を使用するのは、この側面です。

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

    要約すると、このクラスのインスタンスは、静的メンバーのネームスペースおよびクラスのコンストラクタとして機能します。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クラス。
      • toString

        public String toString​()
        次のクラスからコピーされた説明: Object
        オブジェクトの文字列表現を返します。 一般に、toStringメソッドは、このオブジェクトをテキストで表す文字列を返します。 この結果は、人間が読める簡潔で有益な情報であるべきです。 すべてのサブクラスで、このメソッドをオーバーライドすることをお勧めします。

        クラスObjecttoStringメソッドは、オブジェクトがインスタンスになっている元のクラスの名前、アットマーク文字@、およびオブジェクトのハッシュ・コードの符号なし16進数表現から構成される文字列を返します。 つまり、このメソッドは次の値と等しい文字列を返します。

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        オーバーライド:
        toString 、クラス:  Object
        戻り値:
        このオブジェクトの文字列表現