Skip to content

Commit 4bd8724

Browse files
rodolforfqpivovarit
authored andcommitted
BAEL-2524 (eugenp#6206)
* BAEL-2524 Uploading article examples. * Fixing build error Used List.of, which is not available on java 8 (running java 11 on my PC)
1 parent 9a567f9 commit 4bd8724

File tree

3 files changed

+112
-0
lines changed

3 files changed

+112
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.baeldung.java8.lambda.methodreference;
2+
3+
public class Bicycle {
4+
5+
private String brand;
6+
private Integer frameSize;
7+
8+
public Bicycle(String brand, Integer frameSize) {
9+
this.brand = brand;
10+
this.frameSize = frameSize;
11+
}
12+
13+
public String getBrand() {
14+
return brand;
15+
}
16+
17+
public void setBrand(String brand) {
18+
this.brand = brand;
19+
}
20+
21+
public Integer getFrameSize() {
22+
return frameSize;
23+
}
24+
25+
public void setFrameSize(Integer frameSize) {
26+
this.frameSize = frameSize;
27+
}
28+
29+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.baeldung.java8.lambda.methodreference;
2+
3+
import java.util.Comparator;
4+
5+
public class BicycleComparator implements Comparator<Bicycle> {
6+
7+
@Override
8+
public int compare(Bicycle a, Bicycle b) {
9+
return a.getFrameSize()
10+
.compareTo(b.getFrameSize());
11+
}
12+
13+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.baeldung.java8.lambda.methodreference;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
import java.util.function.BiFunction;
7+
8+
import org.junit.Test;
9+
10+
public class MethodReferenceExamples {
11+
12+
private static <T> void doNothingAtAll(Object... o) {
13+
}
14+
15+
;
16+
17+
@Test
18+
public void referenceToStaticMethod() {
19+
List<String> messages = Arrays.asList("Hello", "Baeldung", "readers!");
20+
messages.forEach((word) -> {
21+
System.out.println(word);
22+
});
23+
messages.forEach(System.out::println);
24+
}
25+
26+
@Test
27+
public void referenceToInstanceMethodOfParticularObject() {
28+
BicycleComparator bikeFrameSizeComparator = new BicycleComparator();
29+
createBicyclesList().stream()
30+
.sorted((a, b) -> bikeFrameSizeComparator.compare(a, b));
31+
createBicyclesList().stream()
32+
.sorted(bikeFrameSizeComparator::compare);
33+
}
34+
35+
@Test
36+
public void referenceToInstanceMethodOfArbitratyObjectOfParticularType() {
37+
List<Integer> numbers = Arrays.asList(5, 3, 50, 24, 40, 2, 9, 18);
38+
numbers.stream()
39+
.sorted((a, b) -> Integer.compare(a, b));
40+
numbers.stream()
41+
.sorted(Integer::compare);
42+
}
43+
44+
@Test
45+
public void referenceToConstructor() {
46+
BiFunction<String, Integer, Bicycle> bikeCreator = (brand, frameSize) -> new Bicycle(brand, frameSize);
47+
BiFunction<String, Integer, Bicycle> bikeCreatorMethodReference = Bicycle::new;
48+
List<Bicycle> bikes = new ArrayList<>();
49+
bikes.add(bikeCreator.apply("Giant", 50));
50+
bikes.add(bikeCreator.apply("Scott", 20));
51+
bikes.add(bikeCreatorMethodReference.apply("Trek", 35));
52+
bikes.add(bikeCreatorMethodReference.apply("GT", 40));
53+
}
54+
55+
@Test
56+
public void limitationsAndAdditionalExamples() {
57+
createBicyclesList().forEach(b -> System.out.printf("Bike brand is '%s' and frame size is '%d'%n", b.getBrand(), b.getFrameSize()));
58+
createBicyclesList().forEach((o) -> this.doNothingAtAll(o));
59+
}
60+
61+
private List<Bicycle> createBicyclesList() {
62+
List<Bicycle> bikes = new ArrayList<>();
63+
bikes.add(new Bicycle("Giant", 50));
64+
bikes.add(new Bicycle("Scott", 20));
65+
bikes.add(new Bicycle("Trek", 35));
66+
bikes.add(new Bicycle("GT", 40));
67+
return bikes;
68+
}
69+
70+
}

0 commit comments

Comments
 (0)