私は次のようにIService
インタフェースを実装しているAddService
クラスとのプログラムがあります:コードのコンパイルと実行の上Java-8で継承を実装する方法は?
IService.java
public interface IService {
Integer add(int x, int y);
}
AddService.java
import com.test.service.IService;
public class AddService implements IService {
@Override
public Integer add(int x, int y) {
return x + y;
}
}
を申し訳ございませんが、上記の実装を変更するとすぐにJava-8
が以下のようにBiFunction
を提供すると、IDEはコンパイル時に不平を言ってくる。
IService.java
import java.util.function.BiFunction;
public interface IService {
BiFunction<Integer, Integer, Integer> add(x, y);
}
AddService.java
import java.util.function.BiFunction;
import com.test.service.IService;
public class AddService implements IService {
@Override
public BiFunction<Integer, Integer, Integer> add = (x, y) -> {
return x + y;
};
}
私はエラーを解決し、私のプログラムを実行することができますどのように任意のアイデア?
'add'はインターフェイスの(暗黙の)' static final'フィールドであり、ここで継承はありません。 – Tom
Java 8では、クラスの作成方法は変更されません。あなたはあなたの 'IService'実装の代わりに'(x、y) - > x + y'を使うことができます(クラスを全く書いていません) – zapl
@Tom:addを 'add(x、y)'に変更すると、コンパイル時のエラーとして - "xはreslovedすることはできません"、任意のアイデアはどのように私はそれを修正することができますか? – Arpit