В настоящее время я начал изучать лямбда-выражения в Java и пытаюсь выяснить, почему этот код не работает. У меня есть общий класс:
import java.util.function.ToIntBiFunction;
public class testclass {
public testclass() {
}
public static ToIntBiFunction<Integer,Integer> multit2 = (Integer a,Integer b)->{
return a*b;
};
public static Integer multit(Integer a, Integer b) {
return a*b;
}
}
и основной в другом классе.
public class ImageCovertor{
public static void main (String[] args) throws IOException {
int d;
testclass test = new testclass();
BiFunction<ToIntBiFunction,Integer, Integer> ddd = (ToIntBiFunction fn, Integer a)->{
return fn.applyAsInt(a,a);
};
d= ddd.apply(testclass::multit, 5);
System.out.println(d);
}//end of main
public static ToIntBiFunction<Integer,Integer> multit = (Integer a,Integer b)->{
return a*b;
};
}
и я пытаюсь передать multit как параметр в функции ddd lambda, но такой код дает мне ошибку:
d= ddd.apply(testclass::multit, 5);
Тип testclass неопределить multit (Object, Object), который применим здесь
также пытался сделать функцию в основном, но это дает мне ту же ошибку, код работает, когда я пишу
testclass.multit
вместо
testclass::multit
Может кто-нибудь объяснить мне, почему второй не работает и как это исправить?спасибо