System 名前空間の使用
System 名前空間は、Apex のデフォルトの名前空間です。つまり、システムクラスの新しいインスタンスを作成するときやシステムメソッドをコールするときに、この名前空間を除外できます。たとえば、組み込みの URL クラスが System 名前空間にあるため、URL クラスのインスタンスを作成する次の 2 つのステートメントは同等です。
および:
同様に、次のどちらを記述しても URL クラスの静的メソッドをコールできます。
または
曖昧さ回避のための System 名前空間の使用
システムクラスの静的メソッドをコールするときは、System 名前空間を含めない方が簡単ですが、場合によっては、組み込みの Apex クラスを同じ名前を持つカスタムの Apex クラスと区別するために System 名前空間を含める必要があります。組み込みのクラスと同じ名前で定義した Apex クラスが組織に含まれる場合、Apex ランタイムでは、デフォルトのカスタムクラスを使用し、カスタムクラス内のメソッドをコールします。次の例を見てみましょう。
開発者コンソールでこのステートメントを実行します。
Database.query ステートメントが実行されると、Apex はまずカスタム Database クラスのクエリメソッドを検索します。ただし、このクラスのクエリメソッドはパラメータを取らず、一致するものが見つからないため、エラーが返されます。System 名前空間では、カスタム Database クラスが組み込みの Database クラスより優先されます。この問題を解決するには、System 名前空間プレフィックスをクラス名に追加して、Apex ランタイムに System 名前空間の組み込み Database クラスのクエリメソッドをコールするように明示的に指示します。