当使用类型提升的重载时,为什么方法调用是模糊的?

Ama*_*man 7 java

public class aman {
    void m(double a , int b, int c) {
        System.out.println("second");
    }
    void m(float a , int b, double c) {
        System.out.println("first");
    }
    public static void main(String[] args) {
        aman obj = new aman();
        obj.m(23, 12, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里,方法m()已经重载但我不理解为什么调用是不明确的,因为在第一种方法中只需要进行1次转换,而在第二种方法中,需要进行两次转换.所以,绝对应该调用第一种方法.请说明为什么没有发生这种情况或者我错过了一些规则.

Jer*_*vel 11

JLS不会将2次转换和1次转换视为差异.它只会区分必须转换不转换.

由于两种方法都必须转换,因此它们同样可行.

与此主题相关,我对类似问题的答案(但不完全相同).