Почему не применяется вывод типа? ⇐ JAVA
-
Гость
Почему не применяется вывод типа?
В этом случае вывод типа работает должным образом, а T параметр типа обрабатывает как Integer, так и Integer. Строка:
публичный класс A { public static void func(T obj1, T obj2) {} public static void main(String[] args) { A.func(1, «Один»); } } Однако в следующем примере это не применимо, поскольку возникает ошибка компиляции:
класс Test { частный объект Т; общественный тест (объект T) { этот.объект = объект; } } общественный класс А { public static void func(Test one, Test two) {} public static void main(String[] args) { Тест один = новый Тест(1); Test two = новый Test("Two"); A.func(один, два); //ошибка компиляции //A.func(один, два); } } Несмотря на то, что (например) Test может обрабатывать как Test, так и Test< /code>, параметр типа T не выводится. Почему это происходит?
В этом случае вывод типа работает должным образом, а T параметр типа обрабатывает как Integer, так и Integer. Строка:
публичный класс A { public static void func(T obj1, T obj2) {} public static void main(String[] args) { A.func(1, «Один»); } } Однако в следующем примере это не применимо, поскольку возникает ошибка компиляции:
класс Test { частный объект Т; общественный тест (объект T) { этот.объект = объект; } } общественный класс А { public static void func(Test one, Test two) {} public static void main(String[] args) { Тест один = новый Тест(1); Test two = новый Test("Two"); A.func(один, два); //ошибка компиляции //A.func(один, два); } } Несмотря на то, что (например) Test может обрабатывать как Test, так и Test< /code>, параметр типа T не выводится. Почему это происходит?
Мобильная версия