如果我有一个方法“重复”这个签名:
repeated(byte a);
repeated(int a);
repeated(long a);
repeated(double a);
repeated(Integer a);
repeated(Object a);
//repeated(long a);
//repeated(Long... a);
执行此操作:repeated(1);
最大尝试次数使Java转到更有效的类型(在本例中为Object)。看起来像必要的时间,但为什么不在只有注释方法的类上工作?因为我尝试了一些方法,并在必要时调用几乎所有方法。
答案 0 :(得分:1)
Java 不需要猜测要调用哪个方法。它已经在编译时知道要调用哪个方法,它由传入的参数类型决定。
运行此命令,看看会发生什么:
select fruit, count(*) over (partition by fruit) as NewColumnwithCount
from t;
答案 1 :(得分:0)
Java中的所有内容都是强类型的,因此它知道在编译时使用哪一个。它选择最具体的类型,所以如果有特定匹配,则在查看其他重载之前先进行匹配。
以下是一些例子:
// Picks int over Integer to avoid autoboxing
repeated((int)5); → repeated(int a);
// Does not match `Object` (even though Integer is an Object) because there's a more specific overload (Integer) available
repeated(new Integer(5)); → repeated(Integer a);
// Matches `Object` because there's no more specific overload
repeated(new String("5")); → repeated(Object a);