【发布时间】:2016-11-02 06:50:06
【问题描述】:
我有一个关于 Java 8 Runnable 的问题。
public static void main(String[] args) {
Runnable r1 = Test::t1;
Runnable r2 = Test::t2;
Runnable r3 = Test::t3;
}
public static void t1() {
}
public static String t2() {
return "abc";
}
public static String t3(String t) {
return t;
}
如代码所示,我理解r1 是对的,r3 是错的,但我不明白为什么r2 也是对的。谁能帮我理解一下?
【问题讨论】:
-
@YassinHajaj 嗯,你是对的!对不起,我失败了:)
-
@Hrabosch 没问题 :)
-
@Hrabosch,r3 错了,我就是不明白为什么 r2 是对的
-
@yijiang 我认为是因为您将方法引用调用为没有参数的静态方法,所以我不知道为什么会有问题。你知道我的意思吗?
-
@Hrabosch,众所周知,Runnable的run方法是没有参数和返回类型的,但是我代码中的t2()有返回类型,所以不知道为什么可以赋值到可运行 r2