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

クラスStaticClass

java.lang.Object
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 System.classがSystemクラスのClassオブジェクトと評価した場合と同様に、Java 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クラス。