Java. Метод перегрузки

например, у меня есть этот класс:

public class Col {

static void test(int a)
    {
        System.out.println("int");
    }
    public static void main(String args[])
    {
        Col.test(12);  //1

        Col.test((byte)12); //2

        Col.test((long)100); //3

    }
}

, и теперь мне интересно, как алгоритм работает с этим кодом. Я думаю, что это шаги:

1 строка - все правильные методы вызова с параметром int, идеально.

2 строки - вызов метода с параметром байта ... ой. что? Java попробовать расширить байт до int? Это правда?

Трехстрочный метод вызова с длинным параметром ... снова упс. что? преобразовать long в int java не может из-за потери точности. его попробовать? И в результате - Исключение.

Затем я добавляю это:

 public static void test(Object a)
    {
        System.out.println("Object");
    }

и если вызов:

Col.test((long)100);

все правильно, исключений нет. Эта проблема возникает при запуске ls . Большинство процессов выдают эту ошибку. Почему это происходит и что я могу сделать, чтобы это работало?

12
задан nakiya 8 December 2010 в 07:41
поделиться