有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaI删除了一个必要的构造函数,但它仍然可以编译和运行

在通过删除我认为不必要的代码来整理我的项目的同时,我删除了表单的构造函数

public MyClass(int a,  int b) 

将另一个构造函数留在原位

public MyClass(double c, double d)

有一个对int,int构造函数的调用,我没有注意到,但是它编译并运行了,但是调用了double,double版本,非常正确地导致抛出我编写的异常处理程序。MyClass不扩展任何其他类

Java根据什么规则导致这种不可见的自动转换发生


共 (3) 个答案

  1. # 2 楼答案

    在方法重载中,调用最具体的方法,因此如果有foo(int, int)foo(double, double)并且调用foo(1,2),那么foo (int, int)将被调用。但是由于1,2也可能是双倍的,如果你没有foo(int, int),那么foo(double, double)将被调用

  2. # 3 楼答案

    这是一个Widening Primitive Conversion。由于可以在不丢失任何信息的情况下将int转换为double,因此Java语言以不可见的方式执行此操作