Что я пытаюсь сделать
У меня есть несколько методов, которые очень похожи. Все они принимают какой-то тип примитива из массива внешней общей библиотеки 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как определить BiFunction, которая принимает параметры только как реализованные Comparable
Anonymous » » в форуме JAVA - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Несовместимые типы. Найдено: 'java. язык. Класс<орг. юнит. бегуны. Параметризовано>',
Anonymous » » в форуме JAVA - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Несовместимые типы. Найдено: 'java. язык. Класс<орг. юнит. бегуны. Параметризовано>',
Anonymous » » в форуме JAVA - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-