注
コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。
この記事では、X++ の静的クラス メンバーについて説明します。 一般に、次の場合は静的メソッドを使用します。
- このメソッドは、クラスで宣言されているメンバー変数にアクセスする必要はありません。
- このメソッドは、クラスのインスタンス (非静的) メソッドを呼び出す必要はありません。
static キーワードを使用して 静的 クラス メンバーを宣言します。 static キーワードは、クラスのインスタンス数に関係なく、メソッドのインスタンスを 1 つだけ作成するようにシステムに指示します。 セッション全体でこの 1 つのインスタンスを使用します。
静的メソッド
このセクションでは、違法コピーを防止するためにソフトウェア キー タイプを使用するシナリオについて説明します。 ソフトウェア キーの各インスタンスには、固有の値を持つことが可能です。 ただし、すべてのソフトウェア キーはソフトウェア キー設計のルールに準拠する必要があるため、ソフトウェア キーへの適合をテストするロジックはすべてのソフトウェア キーに対して同じです。 したがって、適合性検証ロジックを含むメソッドは静的でなければなりません。
static キーワードを使用して宣言されるメソッドの例を次に示します。
public class SoftwareKey
{
static public boolean validateSoftwareKey(str _softwareKeyString)
{
// Your code here.
return false;
}
}
次の例では、クラスで静的メソッドを呼び出す前に SoftwareKey クラスのインスタンスを構築する必要はありません。 静的な validateSoftwareKey メソッドを呼び出すときは、構文はそのメソッドを含むクラスの名前で始まります。 コロンのペア (::) は、クラス名を静的メソッド名に接続します。
boolean yourBool = SoftwareKey::validateSoftwareKey(yourSoftwareKeyString);
静的フィールド
静的フィールドは、 static キーワードを使用して宣言する変数です。 概念的には、クラスに適用され、クラスのインスタンスには適用されません。
静的コンストラクター
静的コンストラクターは、クラスに対して静的呼び出しまたはインスタンス呼び出しが行われる前に常に実行されます。 静的コンストラクターの実行は、ユーザーのセッションに対して相対的です。 静的コンストラクターは、次の構文を使用します。
static void TypeNew()
静的コンストラクターは明示的に呼び出さないでください。 コンパイラは、クラスの他のメソッドの前にコンストラクターが 1 回のみ呼び出されることを確認するコードを生成します。 静的コンストラクターを使用して、静的データを初期化するか、1 回だけ実行する必要がある特定のアクションを実行します。 静的コンストラクターのパラメーターを指定することはできません。 静的としてマークする必要があります。
次のコード例は、静的コンストラクターを使用して単一のインスタンスを作成する方法を示しています。
public class Singleton
{
private static Singleton instance;
private void new()
{
}
static void TypeNew()
{
instance = new Singleton();
}
public static Singleton Instance()
{
return Singleton::instance;
}
}
シングルトンは、クラスにインスタンスが 1 つだけ存在することを保証します。 次の例は、単一をインスタンス化する方法を示しています。
Singleton i = Singleton::Instance();
スタティック メソッド
クラス メソッドとも呼ばれる静的メソッドは、クラスに属しており、キーワード static を使用して作成されます。 静的メソッドを使用する前に、オブジェクトのインスタンスを作成する必要はありません。 静的メソッドを使用して、テーブルに格納されているデータを操作します。 静的メソッドではメンバー変数を使用できません。 静的メソッドを呼び出すには、次の構文を使用します。
ClassName::methodName();
静的およびインスタンス メソッド
メソッドのアクセサー キーワードは、どのメソッドが静的であるか、静的でないかに関係なく、同じクラスにある 2 つのメソッド間の呼び出しを制限することはありません。 静的メソッドでは、新しいコンストラクター メソッドがプライベート モディファイアーで修飾されている場合でも、新しいコンストラクター メソッドに対する呼び出しは有効です。 これらの呼び出しの構文では、 new キーワードを使用する必要があります。 静的メソッドのコードは、クラスのインスタンス メソッドを呼び出す前に、独自のクラスのインスタンス オブジェクトを構築する必要があります。