Intereting Posts
Ошибка подтверждения контракта в корде Hello World pt 2 Использование плюс равно оператору с байтами Запись в файл после матча в Котлине Параметры абстрактного класса и лямбда Что произошло при запуске кода HashMap (it)? AWS Lambda Java / Kotlin Отправить сообщение для SQS кратные пары в карту множества; создавать записи в карте, если они уже не существуют В TornadoFX, как я могу привязать свойства BigDecimal к другому свойству BigDecimal с помощью objectBinding? Почему объектам, находящимся внутри объекта сопутствующего объекта Kotlin, не удается получить доступ к «статически», когда другие члены могут? Получение доступа к экземпляру в функции обертки Что означает <ClassName>. () В Котлине? Выделение синтаксиса Fisheye / Crucible для Kotlin Внедрить только один метод из интерфейса в анонимном классе Список файлов рекурсивно в Котлине Обертывание всех внутренних методов одним и тем же пробником в Котлине

Почему Netbeans жалуется на двусмысленность, в то время как Intellij вместо этого не

У меня есть kotlin math lib со следующим классом Vec2i и основным конструктором :

 data class Vec2i(override var x: Int, override var y: Int) : Vec2t<Int>() 

Тогда Vec2i также среди нескольких вторичных конструкторов, который должен перехватывать все другие типы номеров :

 constructor(x: Number, y: Number) : this(xi, yi) 

Все под Idea компилируется и запускается. Я тестировал артефакт с отдельным проектом java.

Тот же артефакт не запускается в проекте java, если я переключаю IDE, Netbeans жалуется на двусмысленность между ними.

Зачем?

Изменить: из какого-то дальнейшего анализа выяснилось, что Netbeans жалуется, потому что одна из координат была int , другая Integer . Пробовав то же самое на идее, он говорит:

не может разрешить конструктор

Итак, почему вызов costructor с (int, int) или (Integer, Integer) прекрасен, но (int, Integer) не разрешается вторичному конструктору и вызывает неоднозначность?

В документации oracles мы видим, что Integer является объектом, который содержит int .

int – примитивный тип, тогда как Integer – объект.

Конструкторы, которые вы разрешаете передавать пару любого типа, но когда вы проходите оба конструктора, не знаете, что делать.

Для получения дополнительной информации у этого вопроса есть хорошая разбивка.