Junior
Tell me about lambda expressions and method references in the context of Java programming and their application in Android development.
sobes.tech AI
Answer from AI
Lambda expressions are a concise notation for creating anonymous functions. They allow passing functionality as an argument to a method or creating a function without specifying its name. Syntax: (parameters) -> { body }. They are used to implement interfaces with a single abstract method (functional interfaces).
Application in Android:
- Event handlers (clicks, touch events).
- Implementation of listener interfaces (e.g.,
OnClickListener,OnCompleteListener). - Working with Stream API for collection processing (filtering, transformation).
// Before Java 8
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Clicked!", Toast.LENGTH_SHORT).show();
}
});
// Using lambda expression
button.setOnClickListener(v -> {
Toast.makeText(context, "Clicked!", Toast.LENGTH_SHORT).show();
});
Method references are a more compact way to refer to existing methods or constructors without executing them. They are used to replace lambda expressions that simply call a single method.
Types of method references:
- Reference to a static method:
Class::staticMethodName - Reference to an instance method of an object:
object::instanceMethodName - Reference to an instance method of an arbitrary object of a particular type:
Type::instanceMethodName - Reference to a constructor:
Class::new
Application in Android:
- Shortening lambda expressions when working with listeners.
- Using in Stream API to apply methods to stream elements.
// Lambda expression
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(name -> System.out.println(name));
// Method reference
names.forEach(System.out::println);
Advantages:
- Improved code readability, especially for simple operations.
- More concise code.
- Using in Stream API makes collection processing more functional and efficient.