###クラス内部に書かれたインターフェース名のすぐ後にくる{}について
こんばんは。
kotlinの文法でわからないことがあり質問させていただきました。
それは、以下に記すコードの第二引数、Observer{}
という部分です。
kotlin
1import android.arch.lifecycle.Observer 2//中略 3 4viewModel.snackbar.observe(this, Observer { text -> 5 text?.let { 6 Snackbar.make(rootLayout, text, Snackbar.LENGTH_SHORT).show()//表示もしている? 7 viewModel.onSnackbarShown()//nullが入る。 8 } 9 })
初めてみたとき、これはObserver
のコンストラクタで、引数にtext?.let
がbody
となるラムダ式を受け取っていると考えました。(text?.let
でもラムダ式を受け取っているようですね)
しかしObserverのリファレンスを見て、ふと思い直しました。
というのも、Observer
はインターフェースとして定義されていたからです。
当然インターフェースにコンストラクタはありません。
ならば、このObserver {}
とはなんなのだろう?と、沼にはまってしまいました。
一応「クラス内部 インターフェース kotlin」とキーワードを並べただけの簡単な検索もかけてみたのですが、それらしい記述は見当たらず・・・こうして質問させていただいた次第です。
おそらくですが、ごく初歩的なことをお聞きしていると思うので、それらの説明は他のサイトでされているのだと思います。
なので回答はそういった参考サイトの掲示だけで充分です。(充分というよりそれが見つからず困っている)(もちろん解説を厭うわけではないのですが、無闇に回答者さまに負担をかけるのが心苦しいので・・・)
どうかご教授いただけたら助かります・・・!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/06 06:13