一个类可以有两个同名的无参数方法吗?

我对这句话感到困惑:

服务提供者类文件有多个名为public static“”的无参数方法provider

假设 JavaDoc 是正确的,并且假设static成员不是继承的,那么这在 Java 中怎么可能呢?或者这是JavaDoc中的错误?


隔江千里
浏览 72回答 1
1回答

慕码人2483693

这在 Java 中怎么可能实现?事实并非如此,因为方法签名必须是唯一的,而签名是方法名称和参数类型。不过,这不是 JVM 的工作原理,而是 Java 的工作原理。JVM 将返回类型作为签名的一部分,因此从技术上讲,一个类可以具有多个具有相同名称和参数但返回类型不同的方法。所以对于用其他 JVM 语言编写的类肯定会发生这种情况,但是对于 Java 类会发生这种情况吗?是的,当您有重写方法的协变返回类型时,它可以。真正发生的是这个假代码:class ShapeBuilder {    ...    public Shape build() {    ....}class CircleBuilder extends ShapeBuilder{    ...    @Override    public bridge Shape build() { // override matches full JVM signature        return <Circle>build(); // call other method with different return type    }    public Circle build() {    ....}“桥接”方法是编译器生成的一种隐藏方法,用于使Java和JVM之间的差异正常工作。仅供参考:在这方面,“桥”方法类似于“合成”方法,它们由编译器生成,以允许外部类访问private内部类的成员,反之亦然。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java