問題
Apexコンパイラエラーが発生するステートメントはどれですか。
- Map<Id, Lead> lmap = new Map<Id, Lead>([Select ID from Lead Limit 8]);
- Date d1 = Date.Today(), d2 = Date.ValueOf(‘2018-01-01’);
- Integer a=5, b=6, c, d = 7;
- List<String> s = List<String>{‘a’,’b’,’c’};
正解
- Map<Id, Lead> lmap = new Map<Id, Lead>([Select ID from Lead Limit 8]);
- Date d1 = Date.Today(), d2 = Date.ValueOf(‘2018-01-01’);
- Integer a=5, b=6, c, d = 7;
- List<String> s = List<String>{‘a’,’b’,’c’};
解説
それぞれの選択肢の理由について説明します。
□ Map<Id, Lead> lmap = new Map<Id, Lead>([Select ID from Lead Limit 8]);
これは不正解です。 このステートメントは、SOQLクエリを利用してリードオブジェクトのリストを取得し、それをMapのコンストラクタに渡しています。この構文は正しく、IdをキーとしたリードオブジェクトのMapを生成するため、コンパイルエラーは発生しません。
□ Date d1 = Date.Today(), d2 = Date.ValueOf(‘2018-01-01’);
これは不正解です。 このステートメントは正しく、Dateクラスのメソッドを使用して日付を取得および変換しています。この行は、現在の日付を取得するためのTodayメソッドと、文字列から日付を生成するためのValueOfメソッドを使用しています。Apexにおいてこのように複数の変数を同じ行で宣言し、異なる値を割り当てることは有効であり、コンパイルエラーは発生しません。
□ Integer a=5, b=6, c, d = 7;
これは不正解です。 こちらは複数の変数を一行で宣言していますが、Apexではこのような宣言は有効で、コンパイルエラーを引き起こしません。変数cには値が割り当てられていないため、デフォルトでnullを持ちますが、これはエラーではありません。
□ List<String> s = List<String>{‘a’,’b’,’c’};
これは正解です。 これはコンパイルエラーが発生します。理由は、リストの宣言において new
キーワードが欠けているためです。Apexでは、新しいオブジェクトやコレクションを作成する際には new
キーワードが必須です。正しい書き方は以下の通りです。
List<String> s = new List<String>{'a', 'b', 'c'};
コメント