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

第二世代パッケージでの Apex クラスの名前空間ベースの参照

@namespaceAccessible は、パッケージ内の公開 Apex を、同じ名前空間を使用する他のパッケージで使用できるようにします。このアノテーションがないと、2GP パッケージで定義されている Apex クラス、メソッド、インターフェース、およびプロパティは、名前空間を共有する他のパッケージからアクセスできません。グローバルとして宣言されている Apex は、アノテーションを必要とせず、常にすべての名前空間で使用できます。

パッケージ間の Apex のアクセシビリティの考慮事項

  • @AuraEnabled Apex メソッドで @namespaceAccessible アノテーションは使用できません。
  • @namespaceAccessible アノテーションはいつでも追加または削除できます。管理およびリリース済み Apex コードに対しても可能です。アノテーションを追加または削除する前に、その機能に依存する連動パッケージがないことを確認してください。
  • パッケージの @namespaceAccessible Apex を追加または削除するときには、このパッケージのアノテーションを参照する他のパッケージのインストール済みバージョンを使用しているユーザへの影響を考慮します。パッケージアップグレードを転送する前に、アップグレードが転送されると完全なコンパイルに失敗するパッケージバージョンを実行しているユーザがいないことを確認します。
  • 公開インターフェースが @namespaceAccessible として宣言されている場合、すべてのインターフェースメンバーはアノテーションを継承します。個々のインターフェースメンバーに、@namespaceAccessible のアノテーションを付加することはできません。
  • public または protected 変数が @namespaceAccessible として宣言されている場合、その定義クラスは @namespaceAccessible アノテーションが付加された global または public のいずれかである必要があります。
  • public または protected 内部クラスが @namespaceAccessible として宣言されている場合、それを囲むクラスは @namespaceAccessible アノテーションが付加された global または public のいずれかである必要があります。
次の例は、@namespaceAccessible アノテーションでマークされている Apex クラスを示します。このクラスは、同じ名前空間内の他のパッケージからアクセスできます。最初のコンストラクタも同じ名前空間内で参照できますが、2 つ目のコンストラクタは参照できません。
1// A namespace-visible Apex class
2@namespaceAccessible
3public class MyClass {
4    private Boolean bypassFLS;
5
6    // A namespace-visible constructor that only allows secure use
7    @namespaceAccessible
8    public MyClass() {
9        bypassFLS = false;
10    }
11
12    // A package private constructor that allows use in trusted contexts,
13    // but only internal to the package
14    public MyClass (Boolean bypassFLS) {
15        this.bypassFLS = bypassFLS;
16    }
17    @namespaceAccessible
18    protected Boolean getBypassFLS() {
19       return bypassFLS;
20    }
21}