假设我使用方法X跟随A类。我可以通过以下两种方式重载方法。
A{
void X(foo p, bar q);
void X(foo p, baq q);
}
A{
void X(foo p, bar q);
void X(baq q, foo p);
}
第二个实现是否应该首选,因为它需要更少的时间来解决并找到正确的函数?
如果需要进一步澄清,请告诉我。
答案 0 :(得分:5)
就延迟而言,参数的顺序没有区别,因为基于参数类型的重载在编译时解决,而不是在运行时解决。
在基于静态类型的参数表达式分析调用的上下文之后,决定将一个重载调用另一个。这个决定被记录下来了#34;在字节码中,所以运行JVM不会花任何时间做出这个决定。
答案 1 :(得分:0)
没关系,但你可以在两个函数分别调用之前和之后输出一个时间并比较毫秒。
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println("Before: {0}", dateFormat.format(date));
x(foo f, baq q);
System.out.println("After: {0}", dateFormat.format(date));
如果两个函数都预先形成相同的函数,那么它们看起来就像它们具有相同的名称一样,你可以使用泛型方法。
void x(T t, U u){}