Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
is the type of System.out.println functional interface?

I do not understand one thing, should not the type of the method reference be a functional interface? So how do we pass System.out::println as a parameter to forEach?in the following code :

1-is System.out::println a Consumer?

2-if yes what is its generic type? I do not mean the type of list that is calling the method, but the generic type of the method reference that passed to the forEach.

Consumer<Integer> consumer=System.out::println;
numbers.forEach(consumer); 
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

The type of System.out.println is not a functional interface, since System.out.println is a method, not an interface.

However, the method reference System.out::println can be used as an implementation of a functional interface. Since println accepts an argument and returns nothing, you can say that it "consumes" the argument you pass to it. Therefore it fits as an implementation of the Consumer<T> functional interface.

Note the there are multiple variants of println, which can be used to implement different functional interfaces.

For example:

  • A method reference to public void println(int x) can implement IntConsumer.

  • A method reference to public void println(double x) can implement DoubleConsumer.

  • A method reference to public void println(Object x) can implement Consumer<T>.

over 4 years ago · Santiago Trujillo Report

0

  1. System.out.println is method not an interface
  2. System.out::println can be treated as an impl of interface since it takes an argument and returns nothing
over 4 years ago · Santiago Trujillo Report

0

This part of code:

Consumer<Integer> consumer=System.out::println;

is equal to this lambda expression:

Consumer<Integer> consumer=i->System.out.println(i);

and above code block could be written in this way as an anonymous inner class using Consumer interface:

Consumer<Integer> consumer=new Consumer<Integer>(){
   public void accept(Integer i){
      System.out.println(i);
   }
}

So "System.out.println" itself it is not a functional interface, but when you use :: you implicitly implement the Consumer interface.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!