Intereting Posts
Компилятор Kotlin для JavaScript в JavaScript? Обеспечение компиляции статического метода внутри подкласса с Kotlin? Поддерживает ли kotlin создание класса, реализующего интерфейс за пределами его файла определения? Как сохранить ссылку объекта объекта singleton в сопутствующем объекте, Котлин Корда-расчет – алгоритм фазового плана Есть ли способ загружать библиотеки времени выполнения, кроме того, что они помещаются в src / main / jniLibs? Рекурсивное определение бесконечной последовательности в Котлине kotlin.TypeCastException: null не может быть применено к ненулевому типу com.midsizemango.databasekotlin.Note ViewPager ImageView не отображается в фрагменте Номер Android: синхронные запросы возвращают null Поддержка Base64 для разных уровней API Возвращаемое значение условия if / else, но также запускает код Ошибка при переходе с Java на Kotlin. Ошибка – org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для задачи: app: compileDebugKotlin ' Обработка аннотации Kotlin игнорирует элементы с похожими именами Котлин не решен

Ошибки при преобразовании Java в код Kotlin

Итак, это мой Java-код, который работает

if (currentForecastJava.getCurrentObservation().getTempF() >= 60) { mCurrentWeatherBox.setBackgroundColor(getResources().getColor(R.color.weather_warm)); mToolbar.setBackgroundColor(getResources().getColor(R.color.weather_warm)); } else { mCurrentWeatherBox.setBackgroundColor(getResources().getColor(R.color.weather_cool)); mToolbar.setBackgroundColor(getResources().getColor(R.color.weather_cool)); } 

То, что я пытаюсь сделать, это написать это в Kotlin (знаете, что AS имеет конвертер, но ничего не меняет)

 if (currentObservationKotlin.tempF.compareTo() >=) currentWeatherBox.setBackgroundColor(resources.getColor(R.color.weather_warm)) toolbar.setBackgroundColor(resources.getColor(R.color.weather_warm)) else currentWeatherBox.setBackgroundColor(resources.getColor(R.color.weather_cool)) toolbar.setBackgroundColor(resources.getColor(R.color.weather_cool)) 

Я знаю, что мне нужно значение в compareTo () и после, но я не совсем уверен, что разместить, поскольку я хочу сравнить TempF с 60, так как я хочу, чтобы цвет изменялся на основе значения TempF из класса данных. У меня нет другого объекта для сравнения.

Я могу написать это на Java, и он работает с остальной частью кода Kotlin, но пытается выяснить, может ли Kotlin сделать Java if / else похожим и быстрее писать.

Solutions Collecting From Web of "Ошибки при преобразовании Java в код Kotlin"

Версия Java и Kotlin будет почти одинаковой. Начните с кода Java и оставьте точки с запятой ; и тогда все, что МОЖЕТ быть обнуляемым, должно обрабатываться либо с помощью null проверок, либо с утверждением, что они никогда не будут иметь значение null !! , или используя другой null оператор. Вы не показываете достаточно кода (т. Е. Подпись метода, входящего в этот код, или объявление используемых переменных), чтобы точно указать, что нужно изменить.

Для обработки null значений см.: В Kotlin, какой идиоматический способ справиться с значениями NULL

В результате вы можете вызвать метод setter как something.setXyz(value) вместо того, чтобы назначать его как свойство something.xyz = value а IDE поможет вам исправить эти или вы можете жить с предупреждением.

Подробнее о функциональной совместимости со свойствами JavaBean см .: Java Interop: Getters and Setters

Поэтому, имея в виду все это, ваш последний код (с немного большей очисткой) может выглядеть примерно так:

 val currentTemp = currentForecastJava.getCurrentObservation()?.getTempF() ?: -1 // or change -1 to whatever default you want if there is no observation if (currentTemp >= 60) { val warmColor = getResources().getColor(R.color.weather_warm) mCurrentWeatherBox.backgroundColor = warmColor mToolbar.backgroundColor = warmColor } else { val coolColor = getResources().getColor(R.color.weather_cool) mCurrentWeatherBox.backgroundColor = coolColor mToolbar.backgroundColor = coolColor }