``` コード ```### 前提・実現したいこと 参考書(*1)の練習問題を解こうとしています。 問題は、「次のコードに含まれる2つのメソッドを関数として変数に格納し、呼び出すプログラム(クラス名:Main)を作成してください。」というものです。 isOddメソッドとaddNamePrefixメソッドのためのインターフェースを作成しましたが、addNamePrefixメソッドで「抽象メソッドは本文を指定しません。」というエラー文が発生します。 addNamePrefixメソッドをstaticメソッドにすると解決することはわかりました。 しかし、なぜStaticをつける必要があるのかがわかりません。 どなたかご教授お願いします。 ```ここに言語名を入力 public interface FuncList{ public static boolean isOdd( int x ) { return ( x % 2 == 1 ); } public String addNamePrefix( boolean male, String name ) { if( male == true ) { return "Mr." + name; } else { return "Ms." + name; } } } interface Func1{ boolean call{ int x }; } interface Func2{ String call (boolean male, String name); } public class Main{ public static void main ( String[] args ){ FuncList funclist = new FuncList(); Func1 f1 = FuncList::isOdd; Func2 f2 = funclist:: addNamePrefix; } } ``` ### 試したこと ### 補足情報(FW/ツールのバージョンなど) (*1)スッキリわかるJava入門 実践編第2版 スッキリわかるシリーズ P.193
コードはマークダウンのcode機能を利用してご提示ください
staticがついているメソッドと、ついていないメソッドとで、関数オブジェクトを参照する時の書き方が**違う**ことが「分かりましたか?」という確認と「それぞれの書き方を練習しましょう」という問題です。
適当に同じように書いたらダメだったからstaticを付けてみた、では意味がありません。
問題の意図を無視してaddNamePrefixをstaticにしたら練習問題になりませんし、本を参照できる人以外が問題の意図をわかるためには問題文を正確に引用するべきです。
(そもそもFuncListを**修正する問題ではない**ですよね?)
問題が「次のコードに含まれる2つのメソッドを関数として変数に格納し、呼び出すプログラム(クラス名:Main)を作成してください。」ならば、interafaceを定義する必要はありません。むしろ使うべきではないです。
もし、実際の問題に上記以外の記述が含まれているのなら全文を追記してください。