的方法的为什么返回类型不是在方法重载考虑? 某人可以解释,如何编译器检查重载方法?

有帮助吗?

解决方案

  

为什么一个方法的返回类型不是在方法重载考虑?

主要的原因是,如果你的没有的考虑这个,如果返回值不分配给一些很多的函数调用变得模糊。例如,其功能调用被调用这里?

public String x() { ... }
public int x() { ... }

// ...

x();  // <-- Which one did you mean? It's impossible to tell if you
      //     allow return types to be part of method overloads.

有其他原因不希望这样做,太。也就是说,许多语言的的让自己的签名,不同之处仅在返回类型;哈斯克尔和Perl就是两个例子。如果你的语言确实允许这一点,就不难看出,所有你需要支持,这是在你的方法解决过程一个步骤:只要有编译器一个明显的方式来选择一个方法或其他。在上述示例中,或许我们将定义一个优先级(也许所定义的第一种方法是获得,例如一个,所以我们的x()呼叫将调用String x())。

另外要注意的是,JVM的的允许存在两种方法只在返回类型的签名不同。 (这是Scala和支持该其他JVM语言如何做到这一点。

其他提示

  

有人可以解释器,编译器如何检查重载方法?

在Java语言规范,部分8.4.9,将包含明确的(但非常技术性的)答案: http://java.sun.com/文档/书籍/ JLS / third_edition / HTML / classes.html#8.4.9

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top