IncompatibleClassChangeError example
Peter Levart
peter.levart at gmail.com
Tue Jun 18 00:29:30 PDT 2013
Just a reminder that the following problem is still present...
Regards, Peter
On 06/09/2013 05:24 PM, Peter Levart wrote:
> Hi,
>
> When I compile and run the following program with the latest tip of
> lambda repo:
>
>
> import java.util.function.Function;
> import java.util.function.Supplier;
>
> public class ICCEBug {
>
> interface Value<T> extends Supplier<T> {
> default <R> Value<R> map(Function<? super T, ? extends R>
> mapper) {
> return new SuppliedValue<>(() -> mapper.apply(this.get()));
> }
> }
>
> static class SuppliedValue<T> implements Value<T> {
> private final Supplier<T> supplier;
>
> SuppliedValue(Supplier<T> supplier) {
> this.supplier = supplier;
> }
>
> @Override
> public T get() {
> return supplier.get();
> }
> }
>
> public static void main(String[] args) {
> Value<String> name = () -> "Peter";
> Value<String> sentence = name.map(nm -> "Hello " + nm + "!");
> System.out.println(sentence.get());
> }
> }
>
>
>
> ... I get the following exception:
>
> Exception in thread "main" java.lang.IncompatibleClassChangeError:
> Class ICCEBug$$Lambda$2 does not implement the requested interface
> ICCEBug$Value
> at ICCEBug$Value.lambda$0(ICCEBug.java:17)
> at ICCEBug$Value$$Lambda$3.get(Unknown Source)
> at ICCEBug$SuppliedValue.get(ICCEBug.java:30)
> at ICCEBug.main(ICCEBug.java:37)
>
>
>
> It looks like something is not compiled correctly.
>
> Regards, Peter
>
More information about the lambda-dev
mailing list