【Salesforce 認定Platformデベロッパー】試験対策:第84問

問題

開発者は以下のコントローラクラスを持ちます。

public with sharing class myFooController{
	public integer prop {get; private set;}
}

どのコードブロックが実行匿名ウィンドウで正常に実行されますか。

  • myFooController m = new myFooController();
    System.assert(m.prop == null);
  • myFooController m = new myFooController();
    System.assert(m.prop == 0);
  • myFooController m = new myFooController();
    System.assert(m.prop == 1);
  • myFooController m = new myFooController();
    System.assert(m.prop != null);

正解

  • myFooController m = new myFooController();
    System.assert(m.prop == null);
  • myFooController m = new myFooController();
    System.assert(m.prop == 0);
  • myFooController m = new myFooController();
    System.assert(m.prop == 1);
  • myFooController m = new myFooController();
    System.assert(m.prop != null);

解説

Apexにおけるinteger型の変数は、初期化されていない場合、デフォルトでnullになります。これはJavaなどの言語とは異なり、プリミティブ型でもnullを許容する点が特徴です。したがって、初期化されていないinteger型のプロパティにアクセスすると、nullを返します。

それぞれの選択肢の理由について説明します。

□ myFooController m = new myFooController();
System.assert(m.prop == null);

これは正解です。propは初期化されておらず、デフォルトでnullを持つため、このアサーションは成功します。

□ myFooController m = new myFooController(); 
System.assert(m.prop == 0);

これは不正解です。Apexでは整数型は自動的に0で初期化されないため、このアサーションは失敗します。propnullであるためです。

□ myFooController m = new myFooController(); 
System.assert(m.prop == 1);

これは不正解です。propは初期化されていないためnullです。1で初期化されることはありませんので、このアサーションも失敗します。

□ myFooController m = new myFooController();
System.assert(m.prop != null);

これは不正解です。前述の通り、propnullで初期化されるため、このアサーションは失敗します。

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約が適用されます。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次