Articles of тип вывод

Тип вывода с функциональными строителями

Я использую Kotlin KBuilders с некоторыми протобафами и сталкиваюсь с ситуацией, которая меня сбивает с толку. Для начала у меня есть функция, которая принимает имя файла и список сериализованных JSON и десериализует JSON на протобафф. fun parseFileData(fileName: String, lines: List<String>): Data.Builder.() -> Unit = when (fileName) { SOME_FILE_NAME -> deserializeLinesToModel(lines, DataModel::class.java) .let { return { […]

Ошибка компиляции вывода типа Kotlin при использовании API-интерфейса Akka

Я хочу использовать API-интерфейс Akka в программе Kotlin. Когда я хочу установить onComplete callback для akka Future , я сталкиваюсь с ошибкой компилятора Kotlin, в то время как эквивалент java работает хорошо: val future: Future<Any> = ask(sender, MyActor.Greeting("Saeed"), 5000) future.onComplete(object : OnComplete<Object>() { override fun onComplete(failure: Throwable?, success: Object?) { throw UnsupportedOperationException() } }, context.dispatcher()) […]

Как сделать вывод типа Котлин из отражения KClass?

В приведенном ниже коде у меня возникли проблемы с правильной настройкой ввода / вывода, так что как из (), так и () работают должным образом. Я попытался включить / отключить как свойства, так и функциональные параметры, но всегда получаю неправильные ошибки ввода. class KStateMachine(private val states: List<StateHandler>) { var currentState: KClass<out StateHandler> private set private […]

Вывод типа для типов лямбда-параметров

Kotlin не может скомпилировать этот код, потому что, поскольку компилятор заявляет: «Ошибка: Smart cast to« Nothing »невозможен, потому что« Аккумулятор »представляет собой сложное выражение" Вы старая функция называется то, что вы ожидаете, т. Е. Я хочу вернуть indexOfMax – но главное, что понимает, почему «умный литье» не удалось наложить на accumulator Int fun indexOfMax(a: IntArray): […]

Вывод типа Kotlin не выполнен

Допустим, у нас есть сторонняя библиотека Java с таким классом: //—————————————————————————————- package foo; public final class Functions { public interface VoidFunc0 { void call(); } public interface VoidFunc1<T> { void call(T t); } @SuppressWarnings("unchecked") public static <T> NoOpFunc<T> noOp() { return new NoOpFunc(); } /*public*/ static final class NoOpFunc<T> implements VoidFunc0, VoidFunc1<T> { @Override public […]

Возможно ли пересечение в Котлин?

У меня есть метод на Java, например: public <T extends A & B> methodName(T arg, …) где A – класс, а B – интерфейс. В моем классе kotlin у меня есть другая variable типа C, и я хочу добиться следующего: if (variable is A && variable is B) { methodName(variable, …) } else { // […]

Как узнать тип вывода в Котлине?

(Я использую Kotlin 1.1.2-2) Например, как узнать тип if (boolean_value) 1 else 2.0 inferred if (boolean_value) 1 else 2.0 ? kotlinc-jvm не показывает тип. javaClass также не помогает, потому что он показывает тип вычисленного значения, а не выражение. >>> (if (true) 1 else 2.0).javaClass.name java.lang.Integer >>> (if (false) 1 else 2.0).javaClass.name java.lang.Double >>> val v: […]

Ошибка ввода типа: недостаточно информации для параметра infer. Пожалуйста, укажите это явно

Я пытаюсь написать приложение Vaadin в Котлине. Для привязки данных Vaadin 8 теперь предоставляет возможность привязки данных типа безопасный. В Котлине я бы ожидал такой работы: class LoginModel { var username: String = "" var password: String = "" } class LoginView : FormLayout() { val name = TextField("name") val password = TextField("password") val loginButton […]

Не удалось «findViewById» в Котлине. Получение ошибки «Ошибка ввода типа»

Я получаю следующую ошибку, когда пытаюсь найти RecycleView по id. Ошибка: – Ошибка ввода типа: недостаточно информации для вывода параметра T Код: class FirstRecycleViewExample : AppCompatActivity() { val data = arrayListOf<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.first_recycleview) val recycler_view = findViewById(R.id.recycler_view) as RecyclerView ///IN THIS LINE I AM GETTING THE ERROR data.add("First Data") data.add("Second […]