当前位置:   article > 正文

关于在java 8中,为什么不能调用当前类正在实现的接口的静态方法的解释_static method may be invoked on containing interfa

static method may be invoked on containing interface class only

以下情况可以通过编译

Class A { 
    static void staticMethod() {
        println();
        }
    }
Class B extends A {
    }
B.staticMethod();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

而以下情况则不可以

interface A { 
    static void staticMethod() {
        println();
        }
    }
Class B implements A {
    }
B.staticMethod();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里会提示错误
static method may be invoked on containing interface class only.
这是因为
在Java 8中,在接口中添加静态方法带来了一个限制 :这些方法不能由实现它的类继承。
这样做是有道理的,因为一个类可以实现多个接口。如果2个接口具有相同的静态方法,它们都将被继承,编译器就不知道要调用哪个接口。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号