Code for "Lambda Expressions and Functional Interfaces. Best Practices and Tips" article

This commit is contained in:
Alex V
2015-12-31 05:14:39 +02:00
parent e4e8042d73
commit 4a6c23cac6
9 changed files with 226 additions and 6 deletions
@@ -0,0 +1,12 @@
package org.baeldung;
import java.util.function.Consumer;
import java.util.function.Function;
public interface Adder {
String addWithFunction(Function<String, String> f);
void addWithConsumer(Consumer<Integer> f);
}
@@ -0,0 +1,16 @@
package org.baeldung;
import java.util.function.Consumer;
import java.util.function.Function;
public class AdderImpl implements Adder {
@Override
public String addWithFunction(Function<String, String> f) {
return f.apply("Something ");
}
@Override
public void addWithConsumer(Consumer<Integer> f) {}
}
@@ -0,0 +1,12 @@
package org.baeldung;
@FunctionalInterface
public interface Bar {
String method(String string);
default String defaultMethod() {
return "String from Bar";
}
}
@@ -0,0 +1,11 @@
package org.baeldung;
@FunctionalInterface
public interface Baz {
String method(String string);
default String defaultMethod() {
return "String from Baz";
}
}
@@ -0,0 +1,9 @@
package org.baeldung;
@FunctionalInterface
public interface Foo {
String method(String string);
default void defaultMethod() {}
}
@@ -0,0 +1,11 @@
package org.baeldung;
@FunctionalInterface
public interface FooExtended extends Baz, Bar {
@Override
default String defaultMethod() {
return Bar.super.defaultMethod();
}
}
@@ -0,0 +1,39 @@
package org.baeldung;
import java.util.function.Function;
public class UseFoo {
private String value = "Enclosing scope value";
public String add(String string, Foo foo) {
return foo.method(string);
}
public String addWithStandardFI(String string, Function<String, String> fn) {
return fn.apply(string);
}
public String scopeExperiment() {
Foo fooIC = new Foo() {
String value = "Inner class value";
@Override
public String method(String string) {
return this.value;
}
};
String resultIC = fooIC.method("");
Foo fooLambda = parameter -> {
String value = "Lambda value";
return this.value;
};
String resultLambda = fooLambda.method("");
return "Results: resultIC = " + resultIC +
", resultLambda = " + resultLambda;
}
}