gxq2008fight
2021-02-01 16:58
采纳率: 50%
浏览 13
已采纳

接口和Lambda表达式

public class LambdaTest 
{
    public static void main(String[] args)
    {
        IntConsumerTest.repeat(10, (i)->System.out.println("cutdown:"+(9-i))); 
    }
}

import java.util.function.*;
public class IntConsumerTest
{
    public static void repeat(int n,IntConsumer action)
    {
        for(int i=0;i<n;i++)
            action.accept(i);
    }
}

问题:IntConsumer是一个函数式接口,action是一个接口变量,如下的语句:action.accept(i);却能正确执行,给人的感觉是一个对象调用了方法,这是什么用法?

 

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 纯白微风 2021-02-02 15:24
    已采纳

    (i)->System.out.println("cutdown:"+(9-i))可以看成是一个匿名类实现了IntConsumer 接口的accept()方法,action.accept(i)的调用实际上就是实现类的调用了

    评论
    解决 1 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题