FashionCodeBoy 2016-06-08 03:11 采纳率: 100%
浏览 3312
已采纳

关于Lambda表达式的报错问题?

package Against;

import Object.LambdaQs;

interface Eatable
{
void taste();
}
interface Flyable
{
void fly(String weather);
}
interface Addable
{
int add(int a,int b);
}
public class LambdaQS {
//调用该方法需要Eatable对象
public void eat(Eatable e)
{
System.out.println(e);
e.taste();
}
//调用该方法需要Flyable对象
public void drive(Flyable f)
{
System.out.println("我正在驾驶:"+f);
f.fly("清空如洗的晴日");
}
//调用该方法需要Addable对象
public void test(Addable add)
{
System.out.println("5与3的和为"+add.add(5, 3));
}
public static void main(String[] args)
{
LambdaQs lq=new LambdaQs();
//Lambda表达式的代码块只有一条语句,可以省略花括号
lq.eat(()-> System.out.println("苹果的味道不错!"));
//lambda表达式的形参列表只有一个形参是,可以省略圆括号
lq.drive(weather->
{
System.out.println("今天天气是:"+weather);
System.out.println("直升机飞行平稳");
});
//代码块只有一条语句的时候,可以省略花括号,如果代码块中只有一条语句,几十该表达式需要返回值,也可以省略return关键字

    lq.test((a,b)->a+b);
}

}
Eclipse:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
The type Eatable from the descriptor computed for the target context is not visible here.

The method drive(Flyable) in the type LambdaQs is not applicable for the arguments (( weather) -> {})
The type Flyable from the descriptor computed for the target context is not visible here.

The method test(Addable) in the type LambdaQs is not applicable for the arguments (( a, b) -> {})
The type Addable from the descriptor computed for the target context is not visible here.

at Against.LambdaQS.main(LambdaQS.java:39)
我用的JDK是支持Java8的
  • 写回答

2条回答

  • 丁垠午 2016-06-08 04:32
    关注

    你的代码并没有什么问题。已测,能正常运行。看看环境对不对吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器