Java方法重载:参数的顺序是否会影响延迟



假设我有下面的类A和方法X。我可以通过以下两种方式重载这些方法。

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);
}

第二种实现方式是否更可取,因为它需要较少的时间来解决并达到正确的功能?

如果需要更多澄清,请告诉我。

就延迟而言,参数的顺序没有什么区别,因为基于参数类型的重载是在编译时解决的,而不是在运行时解决的。

在基于静态类型的参数表达式分析调用的上下文之后,决定调用一个重载而不是另一个重载。这个决定被"记录"在字节码中,所以运行JVM不会花费任何时间来做出这个决定。

这不重要,但您可以分别在调用两个函数之前和之后输出一个时间,并比较毫秒数。

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){}

最新更新