Вопросы по тегу: kotlin

(95)

«Модуль был скомпилирован с несовместимой версией Kotlin. Бинарная версия его метаданных — 1.5.1, ожидаемая версия — 1.1.16»

Я новичок в разработке приложений Kotlin. При попытке собрать приложение возникает следующая ошибка - e: C:/Users/Lenovo/.gradle/caches/transforms-2/files-2.1/32f0bb3e96b47cf79ece6482359b6ad2/jetified-kotlin-stdlib-jdk7-1.5.0.jar!/META-INF/kotlin-stdlib- jdk7.kotlin_module: модуль был скомпилирован с несовместимой версией Kotlin. Бинарная версия его метаданных — 1.5.1, ожидаемая версия — 1.1.16. Это про обновление модуля? Тогда как его обновить?
S

Saheel Sapovadia

8 месяцев назад

Ответов: 17

Геттеры и сеттеры в Котлине

В Java, например, я могу написать геттеры самостоятельно (сгенерированные IDE) или использовать аннотации, такие как @Getter в ломбоке, что было довольно просто.Kotlin, однако, имеет геттеры и сеттеры по умолчанию. Но я не понимаю, как ими пользоваться.Хочу сделать, скажем, похоже на Java:private val isEmpty: String get() = this.toString() //making this thing public rises an error: Getter visibility must be the same as property visibility. Так как же работают геттеры?
n

nutella_eater

6 лет назад

Ответов: 7

Котлин: Что означает «возврат @»?

Я использую RxJava в одном из своих проектов, я преобразовал один из своих классов в Kotlin с помощью плагина Android Studio и в одной из карт flatMap лямбда (Func1 в java), промежуточные результаты выглядят так следующее @Func1.Понятия не имею, что это значит.something.flatMap(Func1>> { val isTemporaryClone = it.isATemporaryClone val isTheOriginalToken = it.tokenIsOriginalHere if (isTemporaryClone) { if (!isTheOriginalToken) { return@Func1 paramsError("Token is always original for temp articles") } return@Func1 mJobRunner.doNotRun(DeleteArticleJob.TAG) .doOnNext(deletePersonalActionById(articleId)) } runArticleJobAsync(DeleteArticleJob.TAG, it) })
G

Glenn Sonna

5 лет назад

Ответов: 2

Как использовать привязку данных и Kotlin в Android Studio 3.0.0

Я только начал использовать Android Studio 3.0.0, но каждый раз, когда я пытаюсь собрать свой проект, я получаю эту ошибку:Error:Circular dependency between the following tasks: :app:compileDebugKotlin +--- :app:dataBindingExportBuildInfoDebug | \--- :app:compileDebugKotlin (*) \--- :app:kaptDebugKotlin \--- :app:dataBindingExportBuildInfoDebug (*) (*) - details omitted (listed previously) Я использую kapt "com.android.databinding:compiler:2.2.0" До того, как я использовал androidProcessor "com.android.databinding:compiler:2.2.0" И все работало нормально... Что я делаю не так??Спасибо!
L

Leandro Borges Ferreira

5 лет назад

Ответов: 4

IntArray против Array<Int> в Котлине

Я не уверен, в чем разница между IntArray и Array в Kotlin и почему я не могу использовать их взаимозаменяемо:Я знаю, что IntArray преобразуется в int[] при нацеливании на JVM, но что означает преобразование Array в ?Кроме того, вы также можете иметь String[] или YourObject[]. Почему в Kotlin есть классы типа {primitive}Array, когда в массив можно упорядочить практически все, а не только примитивы.
f

frankelot

5 лет назад

Ответов: 3

Статические методы и переменные Kotlin

Я хочу сохранить экземпляр класса в общедоступную статическую переменную, но не могу понять, как это сделать в Kotlin.class Foo { public static Foo instance; public Foo() { instance = this; } }
C

Caleb Bassham

5 лет назад

Ответов: 4

Аннотации RequiresApi и TargetApi для Android

В чем разница между RequiresApi и TargetApi?Образец в котлине:@RequiresApi(api = Build.VERSION_CODES.M) @TargetApi(Build.VERSION_CODES.M) class FingerprintHandlerM() : FingerprintManager.AuthenticationCallback() ПРИМЕЧАНИЕ: FingerprintManager.AuthenticationCallback требуется API MПРИМЕЧАНИЕ 2: если я не использую TargetApi, lint завершится с ошибкой для класса требуется уровень API 23...
D

Daniel Gomez Rico

5 лет назад

Ответов: 5

Чем сопрограммы Kotlin лучше, чем RxKotlin?

Зачем мне использовать сопрограммы Kotlin?Похоже, что библиотека RxKotlin гораздо более универсальна. По сравнению с ним сопрограммы Kotlin выглядят значительно менее мощными и более громоздкими в использовании.Я основываю свое мнение о сопрограммах на этом обсуждении дизайна Андрея Бреслава (JetBrains)Слайд-шоу из выступления доступно здесь.EDIT (спасибо @hotkey):Лучший источник информации о текущем состоянии сопрограмм здесь.
c

charlie_pl

5 лет назад

Ответов: 5

Постоянство комнаты: ошибка: сущности и Pojos должны иметь пригодный для использования общедоступный конструктор

Я конвертирую проект в Kotlin и пытаюсь сделать свою модель (которая также является моей сущностью) классом данных Я намерен использовать Moshi для преобразования ответов JSON из API@Entity(tableName = "movies") data class MovieKt( @PrimaryKey var id : Int, var title: String, var overview: String, var poster_path: String, var backdrop_path: String, var release_date: String, var vote_average: Double, var isFavorite: Int ) Я не могу собрать приложение из-за следующей ошибки Сущности и Pojos должны иметь общедоступный конструктор. У вас может быть пустой конструктор или конструктор, параметры которого соответствуют полям (по имени и типу). Не удается найти сеттер для поля. Примеры, которые я нашел, недалеко от этогоЕсть идеи, как это решить?
L

Leonardo Deleon

5 лет назад

Ответов: 30

Kotlin: разница между объектом и сопутствующим объектом в классе

В чем разница между объектом и сопутствующим объектом в классе в kotlin?Пример:class MyClass { object Holder { //something } companion object { //something } } Я уже читал, что сопутствующий объект должен использоваться, если содержащие параметры/методы тесно связаны с его классом.Но почему в классе также можно объявить обычный объект? Потому что он ведет себя точно так же, как компаньон, но у него должно быть имя.Есть ли разница в его "статическом" (я со стороны Java) жизненном цикле?
P

Poweranimal

5 лет назад

Ответов: 6

Статический блок инициализации в Котлине

Что эквивалентно статическому блоку инициализации в Kotlin?Я понимаю, что Kotlin разработан так, чтобы не было статических вещей. Я ищу что-то с эквивалентной семантикой - код запускается один раз при первой загрузке класса.Мой конкретный вариант использования заключается в том, что я хочу включить функцию DayNight из библиотеки Android AppCompat, и инструкции говорят поместить некоторый код в блок статической инициализации класса Application.*100006 *
M

Marcin Koziński

6 лет назад

Ответов: 2

Android N Java 8 features (Jack compiler) and Kotlin interop

Update 3. KOTLIN IS NOW OFFICIALLY SUPPORTED FOR ANDROID DEVELOPMENT. BY GOOGLE. YAAAAAAAAS! Update 2: It looks like JetBrains is really committed to supporting Kotlin for Android in the long run. I'm a happy kotlin user :). Update: Hadi Hariri, from JetBrains, mentioned they're going to release some info on this topic. I will update this post once they do. === DEPRECATED STUFF NEXT === Google just released a preview for the upcoming Android N with some interesting features, the most notable being partial Java 8 language support. This is possible due to the new Jack toolchain Google is working on. The current toolchain using javac or kotlinc: javac (.java --> .class) --> dx (.class --> .dex) kotlinc (.kt --> .class) --> dx (.class --> .dex) New Jack toolchain: Jack (.java --> .jack --> .dex) I am assuming Google will push forward towards making Jack the default toolchain for Android development. Update: Jack is now deprecated. Yas. My question is how will this new toolchain affect me, in the future, as a kotlin user for Android development? Will I get "stuck in the past"?
T

Tudor Luca

6 лет назад

Ответов: 8

What's Kotlin Backing Field For?

As a Java developer, the concept of a backing field is a bit foreign to me. Given: class Sample { var counter = 0 // the initializer value is written directly to the backing field set(value) { if (value >= 0) field = value } } What's this backing field good for? Kotlin docs said: Classes in Kotlin cannot have fields. However, sometimes it is necessary to have a backing field when using custom accessors. Why? What's the difference with using the properties name itself inside the setter, eg.* class Sample { var counter = 0 set(value) { if (value >= 0) this.counter = value // or just counter = value? } }
Y

Yudhistira Arya

5 лет назад

Ответов: 5

Safeargs library doesnt generate direction class

I use navigation library and safeargs for passing data. I define argument to fragment like that. OtherFragmentArgs generated, I can use it but OtherFragmentDirection class doesnt generate when I click "make project". Is that bug or I have to do something different. Thnx for advice. buildscript { ... dependencies { ... classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha01" } } build.gradle apply plugin: "androidx.navigation.safeargs" MainActivity.kt
6

6155031

4 года назад

Ответов: 27

Сортировка коллекции по нескольким полям в Котлине

Допустим, у меня есть список людей, которых мне нужно сначала отсортировать по возрасту, а затем по имени.Исходя из фона C #, я могу легко добиться этого на указанном языке, используя LINQ:var list = new List (); list.Add (новый человек (25, «Том»)); list.Add (новый человек (25, «Дэйв»)); list.Add (новый человек (20, «Катя»)); list.Add (новый человек (20, «Алиса»)); // произведет: Алиса, Кейт, Дэйв, Том var sortedList = list.OrderBy (person => person.Age) .ThenBy (person => person.Name) .ToList (); Как это сделать с помощью Kotlin?Это то, что я пробовал (это явно неверно, поскольку вывод первого предложения "sortedBy" перекрывается вторым, что приводит к списку, отсортированному только по имени)val sortedList = ArrayList (list.sortedBy {it.age} .sortedBy {it.name})) // неверно
F

Fire095

6 лет назад

Ответов: 2

Методы интерфейса по умолчанию поддерживаются только начиная с Android 7.0 (Nougat).

Я обновился до Android Studio 3.1 и получаю следующую ошибку: Методы интерфейса по умолчанию поддерживаются только начиная с Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate (android.arch.lifecycle.LifecycleOwner) Сообщение {kind = ERROR, text = Методы интерфейса по умолчанию поддерживаются только начиная с Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate (android.arch.lifecycle.LifecycleOwner), sources = [ Неизвестный исходный файл], имя инструмента = Optional.of (D8)} Вот моя конфигурация Gradle:compileSdkVersion 27 //buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 16 targetSdkVersion 27 multiDexEnabled true //... } Как видите, я нацелен на 27, что уже превышает 24, на которые он жалуется. Что именно я должен сделать, чтобы это исправить? Если я перейду на Java 1.8, не упущу ли я много клиентов? Почему я не получал эту ошибку до обновления Android Studio?Я не знаю, относится ли это к классу LifecycleObserver, который я недавно добавил. Он был в Kotlin, и теперь я изменил его на Java, но после очистки проекта у меня все равно появляется та же ошибка:общедоступный класс LifeCycleAwareObserver реализует LifecycleObserver { @OnLifecycleEvent (Lifecycle.Event.ON_STOP) public void onAppBackgounded () { AnalyticsUtils.trackStartSession (true); } @OnLifecycleEvent (Lifecycle.Event.ON_START) public void onAppForegounded () { AnalyticsUtils.trackStartSession (ложь); } } Как я могу отследить источник ошибки и исправить ее?Вот мои зависимости от версий:project.ext { firebase_version = '12.0.0' supportlib_version = '27.0.2' room_version = '1.0.0' espresso_version = '3.0.1' archLifecycleVersion = '1.1.1' }
j

j2emanue

4 года назад

Ответов: 10

What Java 8 Stream.collect equivalents are available in the standard Kotlin library?

In Java 8, there is Stream.collect which allows aggregations on collections. In Kotlin, this does not exist in the same way, other than maybe as a collection of extension functions in the stdlib. But it isn't clear what the equivalences are for different use cases. For example, at the top of the JavaDoc for Collectors are examples written for Java 8, and when porting them to Kolin you can't use the Java 8 classes when on a different JDK version, so likely they should be written differently. In terms of resources online showing examples of Kotlin collections, they are typically trivial and don't really compare to the same use cases. What are good examples that really match the cases such as documented for Java 8 Stream.collect? The list there is: Accumulate names into a List Accumulate names into a TreeSet Convert elements to strings and concatenate them, separated by commas Compute sum of salaries of employee Group employees by department Compute sum of salaries by department Partition students into passing and failing With details in the JavaDoc linked above.Note: this question is intentionally written and answered by the author (Self-Answered Questions), so that the idiomatic answers to commonly asked Kotlin topics are present in SO. Also to clarify some really old answers written for alphas of Kotlin that are not accurate for current-day Kotlin.
J

Jayson Minard

6 лет назад

Ответов: 4

Разница между "*" и "Any" в дженериках Kotlin

Я не уверен, что полностью понимаю разницу между SomeGeneric и SomeGeneric . Я думаю, что * представляет что угодно (подстановочный знак), а Any представляет объект, от которого наследуются объекты ALL. Кажется, они должны быть такими же, но так ли?
W

Wheel Builder

5 лет назад

Ответов: 3

Android Room - выберите запрос с LIKE

Я пытаюсь сделать запрос для поиска всех объектов, имена которых содержат текст:@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%") fun loadHamsters(search: String?): Flowable> Сообщения:Error:no viable alternative at input 'SELECT * FROM hamster WHERE name LIKE %' Error:There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (near "%": syntax error) Error:Unused parameter: arg0 Тоже пробую:@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'") fun loadHamsters(search: String?): Flowable> Сообщения:Error:Unused parameter: arg0 Как исправить?
D

Denis Buzmakov

5 лет назад

Ответов: 4

предупреждение: файлы JAR времени выполнения Kotlin в пути к классам должны иметь одинаковую версию

Я получаю следующее предупреждение, но не уверен, где находится версия 1.0.6.Возможно ли, что эта ошибка возникает из-за библиотеки Kotlin, которая каким-то образом включает старую версию Kotlin?Есть идеи, как это исправить или, по крайней мере, как я могу последовать предложению сделать явное отражение kotlin (1.1)?
y

ycomp

5 лет назад

Ответов: 7

Версия kotlin, которая используется для сборки с помощью gradle (1.1.2-5), отличается от той, которая включена в плагин IDE (1.1.2-4)

Кто-нибудь решил эту проблему? версия kotlin, которая используется для сборки с помощью gradle (1.1.2-5), отличается от той, которая включена в плагин IDE (1.1.2-4) Я использую AS 3.0 Canary 4
r

raditya gumay

5 лет назад

Ответов: 5

Класс данных Kotlin от Json с использованием GSON

У меня есть класс Java POJO вроде этого:class Topic { @SerializedName("id") long id; @SerializedName("name") String name; } и у меня есть класс данных Kotlin, например data class Topic(val id: Long, val name: String) Как предоставить ключ json любым переменным класса данных kotlin, например аннотации @ SerializedName в переменных java?
e

erluxman

5 лет назад

Ответов: 3

Разница между ArrayList<String>() и mutableListOf<String>() в Kotlin

private val repositories = mutableListOf() private val repositories = ArrayList() Оба являются изменяемым списком, тогда в чем смысл двух ключевых слов mutableListOf или ArrayList?или есть большая разница?
S

Sai

5 лет назад

Ответов: 4

Оператор звездочки в Kotlin перед именем переменной или оператор распространения в Kotlin

Я хочу знать, что именно делает звездочка перед именем переменной в Kotlin. Я видел это (* args) в примере Spring загрузки Kotlin:@SpringBootApplication open class Application { @Bean open fun init(repository: CustomerRepository) = CommandLineRunner { repository.save(Customer("Jack", "Bauer")) repository.save(Customer("Chloe", "O'Brian")) repository.save(Customer("Kim", "Bauer")) repository.save(Customer("David", "Palmer")) repository.save(Customer("Michelle", "Dessler")) } } fun main(args: Array) { SpringApplication.run(Application::class.java, *args) }
m

mojtab23

5 лет назад

Ответов: 5

Как создать экземпляр анонимного интерфейса в Котлине?

У меня есть сторонняя библиотека Java, объект с таким интерфейсом:public interface Handler { void call(C context) throws Exception; } Как я могу кратко реализовать его в Kotlin, как анонимный класс Java, например:Handler handler = new Handler { @Override public void call(MyContext context) throws Exception { System.out.println("Hello world"); } } handler.call(myContext) // Prints "Hello world"
P

Peter Lamberg

6 лет назад

Ответов: 5

Как в Kotlin прочитать все содержимое InputStream в строку?

Недавно я видел код для чтения всего содержимого InputStream в строку в Kotlin, например:// вход имеет тип InputStream val baos = ByteArrayOutputStream () input.use {it.copyTo (baos)} val inputAsString = baos.toString () А также:val reader = BufferedReader (InputStreamReader (вход)) пытаться { val results = StringBuilder () while (true) { val line = reader.readLine () если (строка == ноль) разрыв results.append (строка) } val inputAsString = results.toString () } наконец-то { reader.close () } И даже это выглядит более гладким, поскольку автоматически закрывает InputStream:val inputString = BufferedReader (InputStreamReader (ввод)). UseLines {lines -> val results = StringBuilder () lines.forEach {results.append (it)} results.toString () } Или немного отличается от этого:val results = StringBuilder () BufferedReader (InputStreamReader (ввод)). ForEachLine {results.append (it)} val resultsAsString = results.toString (). Тогда вот эта функциональная складка:val inputString = input.bufferedReader (). UseLines {lines -> lines.fold (StringBuilder ()) {бафф, строка -> buff.append (строка)} .toString () } Или вариант плохой, который не закрывает InputStream:val inputString = BufferedReader (InputStreamReader (вход)) .lineSequence () .fold (StringBuilder ()) {бафф, строка -> buff.append (строка)} .нанизывать() Но все они неуклюжие, и я все время нахожу все новые и разные версии одного и того же ... а некоторые из них даже не закрывают InputStream. Какой неуклюжий (идиоматический) способ прочитать InputStream?Примечание: этот вопрос специально написан и на него дан ответ автора (Вопросы с самостоятельным ответом), так что идиоматические ответы на часто задаваемые темы Kotlin представлены в СО.
J

Jayson Minard

5 лет назад

Ответов: 4

Что такое ключевое слово out в котлине

Я не могу понять и не могу найти значение ключевого слова out в котлине.Вы можете посмотреть пример здесь: List Если кто может объяснить значение этого. Было бы очень признательно.
A

Akshay Sood

5 лет назад

Ответов: 7

Эффективные перечисления в котлине с обратным поиском?

Я пытаюсь найти лучший способ выполнить «обратный поиск» по перечислению в Котлине. Один из моих выводов из Effective Java заключался в том, что вы вводите статическую карту внутри перечисления для обработки обратного поиска. Перенос этого на Kotlin с помощью простого перечисления приводит меня к коду, который выглядит следующим образом:enum class Type(val value: Int) { A(1), B(2), C(3); companion object { val map: MutableMap = HashMap() init { for (i in Type.values()) { map[i.value] = i } } fun fromInt(type: Int?): Type? { return map[type] } } } Мой вопрос: это лучший способ сделать это или есть лучший способ? Что делать, если у меня есть несколько перечислений, которые следуют аналогичному шаблону? Есть ли в Kotlin способ сделать этот код более пригодным для повторного использования в перечислениях?
B

Baron

6 лет назад

Ответов: 14

Расширять и внедрять одновременно в Котлине

В Java вы можете делать такие вещи, как:class MyClass extends SuperClass implements MyInterface, ... Возможно ли то же самое в Котлине? Предполагая, что SuperClass является абстрактным и не реализует MyInterface
c

chntgomez

4 года назад

Ответов: 2

Пример, когда мы должны использовать run, let, apply, also и with на Kotlin

Я хочу иметь хороший пример для каждой функции, запускаемой, пусть, применимо и сЯ прочитал эту статью, но все еще не нашел примера
U

UmAnusorn

4 года назад

Ответов: 5

2022 WebDevInsider