JavaでFile::deleteという表記がありますが
1.この書き方はなんというのですか?
2.これはどういう意味ですか?
3.これを受け取る関数は作れるのですか?
お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
1.この書き方はなんというのですか?
Java8で追加された「メソッド参照(method reference)」という記法です。
2.これはどういう意味ですか?
字義通り「クラスjava.io.File
がもつインスタンスメソッドdelete
への参照」を意味します。通常であればFile
クラスのインスタンスf
に対して、f.delete()
のようなメソッド呼び出しによりboolean
型を返します。これは見方を変えると「File
クラスのインスタンスを受け取ってboolean
型に変換する操作」と解釈できます。
3.これを受け取る関数は作れるのですか?
例えば java.util.functional.Function<File, Boolean>
型として受け取れます。
Java
1boolean method(Function<File, Boolean> func) 2{ 3 File f = new File("/tmp/foo"); 4 // インスタンスfに対してfunc=File::deleteを呼び出し 5 boolean result = func.apply(f); 6 return result; 7} 8 9method(File::delete); // ★
投稿2018/11/01 15:15
総合スコア6191
0
1.全体がないので推測ですが、メソッド参照と思われます。
2.Streamの中で使われていると推測します。おそらくこんな感じ…
java
1stream.filter(何か).forEach(File::delete);
(forEachじゃない可能性もあるけどそっちの使い道は微妙そうなのでたぶんこっち)
ざっくりいうと、そのStreamを流れてきた各要素(Fileオブジェクト)それぞれに対して、deleteメソッドを実行するということ。Streamを理解しないとこの辺は説明が難しい。
3.該当する関数型インタフェースの型であれば受け取れます。
投稿2018/11/01 14:57
総合スコア20651
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/01 22:39