拿代码:
public class A {
public static void main(String[] args) {
new Thread((new I() {})::test);
}
interface I {
private void test() {}
}
}
Run Code Online (Sandbox Code Playgroud)
并尝试编译.我收到:
A.java:5: error: invalid method reference
new Thread(((new I() {}))::test);
^
compiler message file broken: key=compiler.misc.cant.resolve.args arguments=method, test, , , {4}, {5}, {6}, {7}
Run Code Online (Sandbox Code Playgroud)
哪里compiler message file broken似乎是不可理解的东西.这是一个错误还是我遗失了什么?
PS提交了一个错误:ID:9052216
我对在继承中使用私有方法感到困惑,例如:
public class A {
private void say(int number){
System.out.print("A:"+number);
}
}
public class B extends A{
public void say(int number){
System.out.print("Over:"+number);
}
}
public class Tester {
public static void main(String[] args) {
A a=new B();
a.say(12);
}
}
Run Code Online (Sandbox Code Playgroud)
基于上面的代码,我感到困惑的私有方法的继承,是继承了私有方法class A来B?或者两个类中的say方法完全不相关?由于代码有当它在main()方法运行错误,好像class B不能调用从私有方法class A.