以下は書籍[独習java 新版]のコードです。
以下は「MethodRefUse.java」です
package to.msn.wings.selflearn.chap10; public class MethodRefUse { public void walkArray(String[] data, Output output) { for (var value : data) { output.print(value); } } static void addQuote(String value) { System.out.printf("[%s]\n", value); } }
以下は、「MethodRefUseBasic.java」です
package to.msn.wings.selflearn.chap10; import to.msn.wings.selflearn.chap10.MethodRefUse; import to.msn.wings.selflearn.chap10.Output; public class MethodRefUseBasic { public static void main(String[] args) { var data = new String[] {"春はあけぼの", "夏は夜", "秋は夕暮れ"}; var u = new MethodRefUse(); u.walkArray(data, MethodRefUse::addQuote); } }
以下は「Output.java」です
package to.msn.wings.selflearn.chap10; @FunctionalInterface public interface Output { void print(String str); }
「MethodRefUseBasic.java」をEclipseからjavaアプリケーションとして実行した場合は、以下のように表示されます。
[春はあけぼの]
[夏は夜]
[秋は夕暮れ]
こちらの結果ですが、MethodRefUse.javaのoutput.print(value);
ここの部分で、 Output.javaのprint
メソッドが指定されているのですが、何故addQuote
メソッドのSystem.out.printf("[%s]\n", value);
こちらの結果が出力されているのでしょうか。
回答1件
あなたの回答
tips
プレビュー