Я вижу здесь 2 функциональных интерфейса (SAM), первый из них - Inter, а второй - FunctionalInterface, предоставляемый Java, и представляющий функцию, которая принимает один аргумент и выдает результат.
Просмотр Inter i2 = func;
line, то, что вы пытаетесь сделать здесь, это присвоить один функциональный интерфейс другому функциональному интерфейсу, что здесь не имеет никакого смысла.
Я изменил ваш код и ввел новый функциональный интерфейс, надеюсь, это поможети очищает ваши сомнения.
@FunctionalInterface
public interface Inter {
BigDecimal method (BigDecimal param);
}
public static void main(String args[])
{
Function<BigDecimal, BigDecimal> func = param -> BigDecimal.ZERO;
Inter i1 = param -> BigDecimal.ZERO; // compile
//creating new functional interface which returns Inter lambda body.
Supplier<Inter> interSuppFuncInter = () -> { return param -> BigDecimal.ZERO; };
Inter i2 = interSuppFuncInter.get(); // now compile's
System.out.println(i2.method(BigDecimal.ZERO)); // invoke i2 lambda by calling its method and passing the param
}