この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

System 名前空間の使用

System 名前空間は、Apex のデフォルトの名前空間です。つまり、システムクラスの新しいインスタンスを作成するときやシステムメソッドをコールするときに、この名前空間を除外できます。たとえば、組み込みの URL クラスが System 名前空間にあるため、URL クラスのインスタンスを作成する次の 2 つのステートメントは同等です。

1System.URL url1 = new System.URL('https://MyDomainName.my.salesforce.com/');
2

および:

1URL url1 = new URL('https://MyDomainName.my.salesforce.com/');
2

同様に、次のどちらを記述しても URL クラスの静的メソッドをコールできます。

1System.URL.getCurrentRequestUrl();

または

1URL.getCurrentRequestUrl();

System 名前空間に加え、System 名前空間には組み込みの System クラスがあり、assertEqualsdebug のようなメソッドを提供します。この場合、名前空間とクラスが同じ名前なので混同しないでください。System.debug('debug message');System.System.debug('debug message'); ステートメントは同等になります。

メモ

曖昧さ回避のための System 名前空間の使用

システムクラスの静的メソッドをコールするときは、System 名前空間を含めない方が簡単ですが、場合によっては、組み込みの Apex クラスを同じ名前を持つカスタムの Apex クラスと区別するために System 名前空間を含める必要があります。組み込みのクラスと同じ名前で定義した Apex クラスが組織に含まれる場合、Apex ランタイムでは、デフォルトのカスタムクラスを使用し、カスタムクラス内のメソッドをコールします。次の例を見てみましょう。

次のカスタム Apex クラスを作成します。
1public class Database {
2    public static String query() {
3       return 'wherefore art thou namespace?';
4    }
5}

開発者コンソールでこのステートメントを実行します。

1sObject[] acct = Database.query('SELECT Name FROM Account LIMIT 1');
2System.debug(acct[0].get('Name'));

Database.query ステートメントが実行されると、Apex はまずカスタム Database クラスのクエリメソッドを検索します。ただし、このクラスのクエリメソッドはパラメーターを取らず、一致するものが見つからないため、エラーが返されます。System 名前空間では、カスタム Database クラスが組み込みの Database クラスより優先されます。この問題を解決するには、System 名前空間プレフィックスをクラス名に追加して、Apex ランタイムに System 名前空間の組み込み Database クラスのクエリメソッドをコールするように明示的に指示します。

1sObject[] acct = System.Database.query('SELECT Name FROM Account LIMIT 1');
2System.debug(acct[0].get('Name'));