我可以将任何lambda表达式转换为方法引用

时间:2017-07-11 07:01:25

标签: java-8

我想知道是否可以将任何lambda表达式转换为方法引用

例如:

如果有一个lambda执行带有2个参数的方法(其中一个来自外部)

.map( t -> removeFilesIfNessasary( externalObj, t ) )

这也可以转换成方法参考吗?

感谢

1 个答案:

答案 0 :(得分:3)

你可以创建一个类,有点像这样:

class Remover {
     private final Object externalObj;

     public Remover(Object externalObj){
         this.externalObj = externalObj;
     }       

     public removeIf(int t){
         removeFilesIfNessasary( externalObj, t);
     }
}

然后声明并使用它:

Remover remover = new Remover(externalObj);

.map(remover::remove);

但严重的是,这看起来非常奇怪;你必须有一个令人信服的理由(我无法想到)。