Developer

内部クラスを使ってみよう【Apex】

Developer
この記事は約2分で読めます。

オブジェクトや項目、値をリファレンスを飛び越えて取得してVF側で表示させる際に
Mapを使ってネストさせるのもいいんですが、
内部クラスを使うとかなり簡単に値の表示ができます。

    public class wrapperClass{

        public Integer i { get; set; }
        public String s { get; set; }
        public Contact c { get; set; }

        public wrapperClass(){
            this.i = 1;
            this.s = 'Sample';
            this.c = new Contact(
              FirstName = 'Test'
            );
        }
    }

書き方はシンプルで普通にクラスとコンストラクタを用意します。

親のクラスの方では、

  public class wrapperTestcontroller {

    public List<wrapperClass> wrapperList{ get;  set; }

    public wrapperTestcontroller(){
        this.conditions = new Contact();
        this.wrapperList = new List<wrapperClass>();
        wrapperList.add(new wrapperClass());
        system.debug(wrapperList);
    }

リストに格納してしまいましょう。
※初期化するのを忘れるとエラーで返されます。

今回はInteger,String,Contactをごちゃまぜたリストにしました。
これをデバッグでみるとどうなるでしょうか。

スクリーンショット 2019-11-12 22.22.40.png

うまく値が入っています。
これをVF側に渡してあげれば、オブジェクトなどの垣根を無視したリストが作れるので
うまく値を表示させるのに便利です。

またコンストラクタに引数を渡せばその引数を使ってSOQLを使ったりもできます。
もちろん引数を違うものを設定すれば違う処理を書くこともできます。
MapをVFで使う時ってネストされてると使いにくいイメージがあるのでこれだとかなり便利ですね。

その他の開発に関する記事はこちらです。

Developerも含めた試験問題にチャレンジしてみましょう。

コメント