gpt4 book ai didi

java - 同一类中两个具有 int 和 long 参数的构造函数

转载 作者:行者123 更新时间:2023-11-30 03:11:32 25 4
gpt4 key购买 nike

我想测试是否有两个构造函数,其中一个的paramsint,另一个为long。调用时会执行哪一个?

我已经尝试过:

public class OverloadingExample {
public OverloadingExample(int i, int j) {
// TODO Auto-generated constructor stub
System.out.println("Hello"+" "+(i+j));
}
public OverloadingExample(long i, long j) {
// TODO Auto-generated constructor stub
System.out.println("long"+(i+j));
}

public static void main(String[] args) {
OverloadingExample duplicacyInHashMap = new OverloadingExample(20, 30);
System.out.println(duplicacyInHashMap);
}
}

输出:

Hello 50
OverloadingExample@6d06d69c

我相信这两个构造函数都被调用,因为 params 20,30int 以及 long 类型。那么第二个构造函数有什么问题,为什么它不打印“long 50”。

最佳答案

两个构造函数都适用。如果删除第一个,将使用第二个 - 我们可以将 int 参数传递给 long 参数。

由于两者都适用,编译器会选择最具体的一个。 (int) 版本比 (long) 版本更具体,因为 intlong 的子类型。

这确实有点令人困惑;如果可以的话,避免它。

关于java - 同一类中两个具有 int 和 long 参数的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33535708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com