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

关于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
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 58coding 2016-08-16 16:50

    可以看下这篇文章,Java8新特性Lambda表达式http://58coding.com/article/detail/24656434620795220

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题