This question already has answers here:
What is the breakdown for Java's lambda syntax?
(4个答案)
6小时前关闭。
我有下面的示例代码
接口
这是
我想知道,当调用
匿名类的样子如何?由于
我很困惑,有人可以帮忙吗?
(4个答案)
6小时前关闭。
我有下面的示例代码
@SpringBootApplication
public class Application implements CommandLineRunner {
private static final Logger logger = LoggerFactory.getLogger(Application.class);
@Autowired
private AppName appName;
@Bean
public AppName getAppName(@Value("${app.name}") String appName) {
return () -> appName;
}
@Override
public void run(String... args) throws Exception {
logger.info("Application name: {}", appName.getName());
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
接口
interface AppName {
String getName();
}
这是
resources/application.properties
spring.main.banner-mode=off
spring.main.log-startup-info=false
app.name=SpringBootBean
我想知道,当调用
getAppName
时(正在传递值SpringBootBean
,这是从app.name
文件中的application.properties
参数开始的),将创建正在实现AppName接口的匿名类。匿名类的样子如何?由于
getName
,必须首先设置。实施类中的设置如何发生?在哪里设置SpringBootBean
以便可以检索它?我很困惑,有人可以帮忙吗?
最佳答案
实现该接口的匿名类如下所示:: () -> appName;
。可能是因为接口起作用。 I. E.只有一种方法。
该实现返回传入的参数。这称为闭包。
未设置值SpringBootBean
。它是从函数返回的。
09-16 04:25