在方法重载中,该类可以有多个具有相同名称的方法,但方法的参数列表不应相同。确保参数列表不同的一种方法是更改方法中参数的顺序。
演示此的程序如下所示-
class PrintValues { public void print(int val1, char val2) { System.out.println("\nThe int value is: " + val1); System.out.println("The char value is: " + val2); } public void print(char val1, int val2) { System.out.println("\nThe char value is: " + val1); System.out.println("The int value is: " + val2); } } public class Demo { public static void main(String[] args) { PrintValues obj = new PrintValues(); obj.print(15, 'A'); obj.print('P', 4); } }
输出结果
The int value is: 15 The char value is: A The char value is: P The int value is: 4
现在让我们了解上面的程序。
print()
在方法重载的实现中,使用两个方法创建PrintValues类。其中的第一个分别接受2个类型为int和char类型的参数,另一个分别接受2个类型为char和int类型的参数。演示这的代码片段如下-
class PrintValues { public void print(int val1, char val2) { System.out.println("\nThe int value is: " + val1); System.out.println("The char value is: " + val2); } public void print(char val1, int val2) { System.out.println("\nThe char value is: " + val1); System.out.println("The int value is: " + val2); } }
在该main()
方法中,将创建类PrintValues的对象obj,并print()
分别使用参数(15,'A')和('P',4)调用该方法两次。演示此代码段如下:
public class Demo { public static void main(String[] args) { PrintValues obj = new PrintValues(); obj.print(15, 'A'); obj.print('P', 4); } }
问题内容: 我正在尝试以下代码: 打印三遍。我希望方法选择要考虑实际的(而不是声明的)参数类型。我想念什么吗?是否有修改此代码,以便它会打印的方式, 问题答案: 我希望方法选择要考虑实际的(而不是声明的)参数类型。我想念什么吗? 是。您的期望是错误的。在Java中,动态方法分派仅发生在调用方法的对象上,而不发生在重载方法的参数类型上。 引用Java语言规范: 调用方法时(第15.12节),实际参数
我有一个对象列表,需要根据特定的顺序排序。如下代码所示: 这也是当它得到排序,只有名称(“宝马”,“奥迪”,“奔驰”)的位置正在改变。我在汽车课上还有一个字段,那就是数量。数量将处于相同位置。这个职位也应该随着名字而改变。 我希望输出为,但实际输出为
问题内容: 在Java的同一类上给定两个方法: 哪里 如果我打电话给: 我发现它被调用。 我曾期望调用最接近的匹配协定而不是最抽象的过载(这就是我所发现的) 有人可以解释为什么吗? 问题答案: 使用了最具体的适用重载-但该重载是在 编译 时根据变量的编译时类型确定的。 换一种说法: 但: 请注意,这与 重载 不同,在 重载 中,重要的是目标对象的 执行时间 类型。
我正在使用AeyJ拦截一个名为的方法。为此,我使用了我自己指定的(标记)注释。这就是类的样子: 截取截取注释的方面: 然而,我的方面是基于带注释的参数进行拦截。但我希望方面能够拦截参数t包含的特定值的方法请求。 例如,如果t==“t1”,则必须截取该方法,否则不能截取。 我想知道是否可以在AeyJ(与Spring AOP结合使用)中做到这一点。
有人能彻底解释一下为什么这会打印21003和32103吗?我真的被这弄糊涂了。谢谢你!
我对这个方法引用语法有点困惑。 需要一个双函数,然而,尽管温度较高,lessThanTemp仍然是有效的参数。lessThanTemp()只接受一个参数。 这一行到底发生了什么:? MCVE: