Aspects
- Functional Programming - Functions
- Functional Programming - Functional Composition
- Functional Programming - Eager vs Lazy Evaluation
- Functional Programming - Persistent Data Structure
- Functional Programming - Recursion
- Functional Programming - Parallelism
- Functional Programming - Optionals & Monads
- Functional Programming - Closure
- Functional Programming - Currying
- Functional Programming - Reducing
Java 8 Onwards
- Functional Programming - Lambda Expressions
- Functional Programming - Default Methods
- Functional Programming - Functional Interfaces
- Functional Programming - Method References
- Functional Programming - Constructor References
- Functional Programming - Collections
Functional Programming
- Functional Programming - High Order Functions
- Functional Programming - Returning a Function
- Functional Programming - First Class Functions
- Functional Programming - Pure Functions
- Functional Programming - Type Inference
- Exception Handling in Lambda Expressions
Streams
- Functional Programming - Intermediate Methods
- Functional Programming - Terminal methods
- Functional Programming - Infinite Streams
- Functional Programming - Fixed Length Streams
Useful Resources
Functional Programming - Constructor References
Constructor references help to point to Constructor method. A Constructor reference is accessed using "::new" symbol.
//Constructor reference Factory vehicle_factory = Vehicle::new;
Example - Usage of Constructor References
Following example shows how Constructor references works in Java 8 onwards.
FunctionTester.java
package com.tutorialspoint;
interface Factory {
Vehicle prepare(String make, String model, int year);
}
class Vehicle {
private String make;
private String model;
private int year;
Vehicle(String make, String model, int year){
this.make = make;
this.model = model;
this.year = year;
}
public String toString(){
return "Vehicle[" + make +", " + model + ", " + year+ "]";
}
}
public class FunctionTester {
static Vehicle factory(Factory factoryObj, String make, String model, int year){
return factoryObj.prepare(make, model, year);
}
public static void main(String[] args) {
//Constructor reference
Factory vehicle_factory = Vehicle::new;
Vehicle carHonda = factory(vehicle_factory, "Honda", "Civic", 2017);
System.out.println(carHonda);
}
}
Output
Run the FunctionTester and verify the output.
Vehicle[Honda, Civic, 2017]
Advertisements