Android開発をKotlin言語でしていると、ボタン押下などのリスナー設定をしているときに
「Redundant SAM - constructor」が出ることがあるので、意味と対処法を残しておく。
「Redundant SAM - constructor」が出ることがあるので、意味と対処法を残しておく。
まぁ、
カーソルを合わせたときに出る「Remove redundant SAM - constructor」を押すか、Alt+Shift+Enterキーの同時押しをすれば、意味を理解していなくても自動でコードを修正してくれますけどね..
カーソルを合わせたときに出る「Remove redundant SAM - constructor」を押すか、Alt+Shift+Enterキーの同時押しをすれば、意味を理解していなくても自動でコードを修正してくれますけどね..
意味
日本語に直訳すると「冗長SAM-コンストラクター」ですね。
では「SAM」とはなにか
つまり、関数が1つしかないインターフェースを指します。
(なのでリスナー関連で発生することが多いんですね..)
そのまま公式ページを読み進めると、「SAM変換」の項目があります。
> 関数型インターフェースの場合、ラムダ式を使用することで
> コードをより簡潔で読みやすくするのに役立つSAM変換を使用できます。
これが答えです。
つまり、
「Redundant SAM - constructor」とは、SUMが冗長なので、SAM変換(ラムダやメソッド参照)で書いて簡潔で読みやすくした方がいいですよ。
というワーニングです。
「Redundant SAM - constructor」とは、SUMが冗長なので、SAM変換(ラムダやメソッド参照)で書いて簡潔で読みやすくした方がいいですよ。
というワーニングです。
対応
ラムダ式で書くのが一般的だと思います。
上の画像を基にラムダ式に書き直すと
AlertDialog.Builder(this) .setTitle("タイトル") .setPositiveButton("Yes", {dialogInterface, i -> //処理内容 }) .show()3行目。クラス名(インターフェース名)の分だけコードが短くなったことがわかりますね。
確かに短くコードが書けて、読みやすくなることができることが確認できました。
この後、
ラムダ式の引数を括弧から外すよう求められますが、
ラムダ式の引数を括弧から外すよう求められますが、
これはまた別の言語仕様が起因する為、別途記事を書こうと思います。
0 件のコメント:
コメントを投稿