小编sea*_*sea的帖子

listFiles 的方法引用

我曾经从一本关于方法引用的书中读到以下代码。

File[] hiddenFiles = new File(".").listFiles(File::isHidden)
Run Code Online (Sandbox Code Playgroud)

当我从 File API 查找该listFiles方法时,我看到它只有以下方法:

listFiles(FileFilter filter)

listFiles(FilenameFilter filter)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过代码并且它有效。但是,虽然 API 声明它接受FileFilterFilenameFilter,但为什么代码可以工作?

我对 File::isHidden 的理解是它等价于以下 lambdas:

(File file) -> file.isHidden()
Run Code Online (Sandbox Code Playgroud)

但在 FileFilter 中,需要指定的方法如下。

boolean accept(File pathname)
Run Code Online (Sandbox Code Playgroud)

那么不应该在那里定义一个名为 accept 的方法,例如:

File[] hiddenFiles = new File(".").listFiles(new FileFilter() {
 public boolean accept(File file) {
   return file.isHidden();
 }
});
Run Code Online (Sandbox Code Playgroud)

或者编译器可以以某种方式自动检测模式并将代码视为 FileFilter,尽管未定义方法“accept”并且未创建 FileFilter 对象?

java lambda java-8

5
推荐指数
0
解决办法
57
查看次数

Restful API 和事件驱动的微服务

在事件驱动的微服务系统中,微服务也是 Restful API 是通常还是最佳实践?

在事件驱动的微服务中,通常被描述为引发一些事件,以及一些其他微服务响应这些事件并执行一些操作。在这种情况下,似乎没有 Restful API 中的“资源”概念。如果一个系统是使用restful API构建的,那么这个系统可以称为微服务系统吗?

在事件驱动的微服务背景下,restful 的概念还适用吗?当我开始更多地了解事件驱动的微观时,我发现自己对这两者有点混淆,并且不确定我是否正确理解了这个概念。

rest microservices

5
推荐指数
1
解决办法
9479
查看次数

如何防止使用@autowired

我了解到自动装配bean实际上不是一个好习惯。春季文档中也提到了这一点。我知道有两种类型的bean配置。一种是通过XML配置,另一种是通过Java配置类。如果我们想使用代码进行bean配置而不使用@autowired,我们该怎么做?似乎如果使用代码,我们仍然需要@autowired才能注入bean?

例如在下面,如果我们不想使用@Autowired,我们该怎么做?最佳实践应该是什么?

@Service
public class ClassA {
  private ClassB classB;

  @Autowired
  public ClassA(ClassB classB) {
    this.classB = classB;
  }
}
Run Code Online (Sandbox Code Playgroud)

java spring spring-boot

0
推荐指数
2
解决办法
82
查看次数

标签 统计

java ×2

java-8 ×1

lambda ×1

microservices ×1

rest ×1

spring ×1

spring-boot ×1