Java lamda表达式
package org.ioc.test;
interface Haha{
Object getObject();
}
public class TestFunctionalInterface {
/**
* 通过这种方式可以实现延迟运行
* @param haha
*/
public void fun(Haha haha){
// 调用才运行
Object object = haha.getObject();
}
public static void main(String[] args) {
// 传参不会运行
new TestFunctionalInterface().fun(()->{
System.out.println("haha");
Object o = new Object();
return o;
});
}
}
spring中使用位置
接口
org.springframework.beans.factory.support.AbstractBeanFactory#doGetBean
public Object getSingleton(String beanName, ObjectFactory<?> singletonFactory) {}
传入一个实现了接口的匿名内部类,让这个接口在这个方法中被执行
实际调用位置
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry#getSingleton(java.lang.String, org.springframework.beans.factory.ObjectFactory<?>)