問題
開発者には次のコードブロックがあります。
public class PaymentTax {
public static decimal SalesTax = 0.0875;
}
trigger OpportunityLineItemTrigger on OpportunityLineItem (before insert, before update) {
PaymentTax PayTax = new PaymentTax();
decimal ProductTax = ProductCost * XXXXXXXXXXX;
}
productTaxを計算するために、開発者はどのコードセグメントをXXXXXXXXXXXに挿入して、トリガー内でクラス変数SalesTaxの値にアクセスできるようにしますか。
- SalesTax
- PayTax.SalesTax
- PaymentTax.SalesTax
- OpportunityLineItemTrigger.SalesTax
正解
- SalesTax
- PayTax.SalesTax
- PaymentTax.SalesTax
- OpportunityLineItemTrigger.SalesTax
解説
この問題のポイントは、静的変数へのアクセス方法を理解しているかどうかという点になります。
静的変数へのアクセス方法:
静的変数は、そのクラスのどのインスタンスにも属さない変数で、特定のクラス全体で共有される値を持ちます。
静的変数の定義例:
public class PaymentTax {
public static decimal SalesTax = 0.0875;
}
静的変数へのアクセス:
静的変数へは、そのクラスの名前を使用して直接アクセスします。オブジェクトのインスタンスを作成せずともアクセスできるのが特徴です。
decimal taxRate = PaymentTax.SalesTax;
理由:
静的変数はクラスレベルで共有されるため、特定のインスタンスに依存しない情報や設定を格納するのに適しています。この性質により、静的変数にアクセスする場合、特定のインスタンスを作成することなく、クラス名を使用して直接アクセスします。
それぞれの選択肢の理由について説明します。
□ SalesTax
これは不正解です。このコードセグメントは、トリガー内のローカル変数またはメンバ変数を参照することを試みますが、SalesTax
はPaymentTax
クラス内の静的変数です。トリガーのスコープ内にはこの名前の変数が存在しないため、この方法でアクセスすることはできません。
□ PayTax.SalesTax
これは不正解です。SalesTax
はPaymentTax
クラス内の静的変数です。静的変数は、特定のインスタンスに依存せずクラス自体に関連付けられているため、インスタンスを使用してアクセスすることはできません。
□ PaymentTax.SalesTax
これは正解です。SalesTax
はPaymentTax
クラスの静的変数であるため、クラス名を使用してアクセスすることができます。この方法で、静的変数の値に正しくアクセスできます。
□ OpportunityLineItemTrigger.SalesTax
これは不正解です。OpportunityLineItemTrigger
トリガー内にSalesTax
変数は定義されていません。そのため、この方法でアクセスすることはできません。
コメント