1

lets say I have

public class Student {
 public Integer getGrade() { return 1;}
}

and I want to pass this function as Function in java in other class(not Student)

which syntax will allow me doing so?

Function<Student,Integer> = ***
asked Mar 8, 2017 at 7:36
0

4 Answers 4

5

Just do:

Function<Student,Integer> f = Student::getGrade;

You seem to have forgotten to put a name for the variable declaration!

Explanation:

Function<Student,Integer> represents a function that takes a Student as parameter and returns an Integer. Obviously, getGrade does not satisfy those criteria. But, since calling getGrade requires a Student object (because it's an instance method), the compiler can smartly use the Student parameter passed in to call getGrade.

If you don't understand what I mean, the syntax is equivalent to:

Function<Student,Integer> f = student -> student.getGrade();

Therefore, the below two lines are the same:

f(myStudent);
myStudent.getGrade();
answered Mar 8, 2017 at 7:49
Sign up to request clarification or add additional context in comments.

Comments

4

Function<Student, Integer> means "you take a student and return any Integer value":

Function<Student, Integer> f1 = student -> 2;

If you need a student grade, then return this value from the getGrade method:

Function<Student, Integer> f2 = student -> student.getGrade();

With the method reference, it might be written in a shorter form:

Function<Student, Integer> f3 = Student::getGrade;
answered Mar 8, 2017 at 7:40

Comments

1

Being that getGrade isn't a static method, you'll need to first instantiate Student in order to store a reference to it.

Student student = ...;
Supplier<Integer> = student::getGrade;

You'll likely want to use a Supplier to store reference to the method because your method takes no input and returns one output (whereas a java Function takes one input and returns one output).

answered Mar 8, 2017 at 7:38

Comments

0

Something like this -

Function<Student, Integer> function = student -> student.getGrade();

or a method reference as

Function<Student, Integer> function = Student::getGrade;
answered Mar 8, 2017 at 7:40

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.