Что я пытаюсь сделать
У меня есть несколько методов, которые очень похожи. Все они принимают какой-то тип примитива из массива внешней общей библиотеки C++ и сохраняют его в массиве Java одинакового размера. Это работает. Но у меня их тонна, и все они выглядят очень копипастно и занимают целые страницы, так что это сводит меня с ума, поэтому я хотел немного пофантазировать с дженериками, лямбда-выражениями и т. д., чтобы сделать это проще и аккуратнее. . Но я получаю ошибку времени компиляции о несовместимых верхних границах.
Работающие методы
public static boolean[] getFromCppArrayBool(SWIGTYPE_p_bool arrayIn, размер int) { boolean[] retval = новый логический[размер]; for(int я = 0; я getSomeBool(array, i)); ^ где T,A,S — переменные типа: T расширяет объект, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) Объект расширяется, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) S расширяет целое число, объявленное в методе getFromCppArrayGeneric(A,S,BiFunction) ./SwigArrayHelper.java:95: ошибка: несовместимые типы: переменная вывода T имеет несовместимые верхние границы int,Object return getFromCppArrayGeneric(arrayIn, size, (array, i)->arraystuff.int_array_getitem(array, i)); ^ где T,A,S — переменные типа: T расширяет объект, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) Объект расширяется, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) S расширяет целое число, объявленное в методе getFromCppArrayGeneric(A,S,BiFunction) В чем, по моему мнению, проблема Я предполагаю, что, хотя я получил свой тип T в результате извлечения первого значения в массиве, ему все равно не нравится, что это примитив, и вы не можете передавать примитивы как обобщения. Но я могу ошибаться.
Какой у меня вопрос
И поэтому? Если да, то есть ли другой способ сделать это без этой проблемы?
Этот вопрос был закрыт, указав на несовместимые типы с Java Generics при попытке использовать BiFunction для обработки различных примитивов, но это не отвечает на вопрос «хорошо, так как бы мне это сделать». Как мне сделать универсальный примитивный экстрактор? Потому что 1 страницу методов с одной строкой, где в другой метод передаются только типы, НАМНОГО легче читать, чем 5 страниц, которые все выглядят одинаково, но таковыми не являются.
Несовместимые типы с Java Generics при попытке использовать BiFunction для обработки различных примитивов ⇐ JAVA
Программисты JAVA общаются здесь
1704247011
Anonymous
Что я пытаюсь сделать
У меня есть несколько методов, которые очень похожи. Все они принимают какой-то тип примитива из массива внешней общей библиотеки C++ и сохраняют его в массиве Java одинакового размера. Это работает. Но у меня их тонна, и все они выглядят очень копипастно и занимают целые страницы, так что это сводит меня с ума, поэтому я хотел немного пофантазировать с дженериками, лямбда-выражениями и т. д., чтобы сделать это проще и аккуратнее. . Но я получаю ошибку времени компиляции о несовместимых верхних границах.
Работающие методы
public static boolean[] getFromCppArrayBool(SWIGTYPE_p_bool arrayIn, размер int) { boolean[] retval = новый логический[размер]; for(int я = 0; я getSomeBool(array, i)); ^ где T,A,S — переменные типа: T расширяет объект, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) Объект расширяется, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) S расширяет целое число, объявленное в методе getFromCppArrayGeneric(A,S,BiFunction) ./SwigArrayHelper.java:95: ошибка: несовместимые типы: переменная вывода T имеет несовместимые верхние границы int,Object return getFromCppArrayGeneric(arrayIn, size, (array, i)->arraystuff.int_array_getitem(array, i)); ^ где T,A,S — переменные типа: T расширяет объект, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) Объект расширяется, объявленный в методе getFromCppArrayGeneric(A,S,BiFunction) S расширяет целое число, объявленное в методе getFromCppArrayGeneric(A,S,BiFunction) В чем, по моему мнению, проблема Я предполагаю, что, хотя я получил свой тип T в результате извлечения первого значения в массиве, ему все равно не нравится, что это примитив, и вы не можете передавать примитивы как обобщения. Но я могу ошибаться.
Какой у меня вопрос
И поэтому? Если да, то есть ли другой способ сделать это без этой проблемы?
Этот вопрос был закрыт, указав на несовместимые типы с Java Generics при попытке использовать BiFunction для обработки различных примитивов, но это не отвечает на вопрос «хорошо, так как бы мне это сделать». Как мне сделать универсальный примитивный экстрактор? Потому что 1 страницу методов с одной строкой, где в другой метод передаются только типы, НАМНОГО легче читать, чем 5 страниц, которые все выглядят одинаково, но таковыми не являются.
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия