【发布时间】:2016-07-21 04:54:27
【问题描述】:
AFAIK 不可能有具有相同调用签名的方法。然而:
$ javap -public java.time.LocalTime | grep "minus" | grep "Temporal" | grep -v "long"
public java.time.LocalTime minus(java.time.temporal.TemporalAmount);
public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);
这些清楚地显示了具有相同调用签名的多个方法。
- Java 如何解析函数调用?
- 为什么会有多个函数?
编辑:通过只保留相关位来简化问题。
【问题讨论】:
-
你确定这些是同一个类的方法吗?
-
这是
javap的输出 - 所以我认为它们是同一类的方法。如果您查看javap -public java.lang.StringBuilder- 它清楚地表明它们属于同一类(除非我不知道javap的某些行为) -
大家发帖说这些方法只是重载了,请仔细看
javap的输出。存在具有完全相同参数的方法对,例如public java.time.LocalTime minus(java.time.temporal.TemporalAmount);和public java.time.temporal.Temporal minus(java.time.temporal.TemporalAmount);。这不仅仅是超载;重载不允许这样做。 -
java.time.LocalTime只有public java.time.LocalTime minus(java.time.temporal.TemporalAmount);。另一种可能是合成桥接方法或类似方法。拆解看了吗? -
为了澄清这个问题,我建议删除关于
StringBuilder的部分,这似乎让人认为你在问方法重载
标签: java overloading javap