Articles of generics

Проекция звезды Котлина на контравариантные типы

Я читаю и пытаюсь понять проекции типа Котлин, иногда я придумываю такие вещи: Что означает контравариантный тип, чтобы иметь звездную проекцию и как она возникает

Лямбда-функции с подстановочными знаками в Котлине

Я смотрел примеры, представленные Google, и наткнулся на эту строку private final ArrayMap<Class, Callable<? extends ViewModel>> creators; Мне трудно понять, как преобразовать этот Callable<? extends ViewModel> Callable<? extends ViewModel> в лямбда в Котлине Как мне это сделать? РЕДАКТИРОВАТЬ: class ViewModelFactory(appComponent: AppComponent) : ViewModelProvider.Factory { private val creators: ArrayMap<Class<*>, () -> ViewModel> = ArrayMap() init { […]

Java vs Kotlin generics

У меня есть следующий класс Java, который я пытаюсь преобразовать в Kotlin, который использует generics. абстрактный класс MvpViewHolder, M, V: View?> (itemView: View): RecyclerView.ViewHolder (itemView) { public abstract class MvpViewHolder<P extends BasePresenter> extends RecyclerView.ViewHolder { protected P presenter; public MvpViewHolder(View itemView) { super(itemView); } public void bindPresenter(P presenter) { this.presenter = presenter; presenter.bindView(this); } public […]

Kotlin: Как я могу получить фактический общий тип T в OneClass <T> во время выполнения

Друзья! Я зеленая рука на Котлине, теперь вот проблема. Теперь я хочу получить общий тип T в OneClass, вот некоторые периферийные коды. // IDatabase.kt package com.ra abstract class IDatabase<T> { } // Database1.kt import kotlin.reflect.jvm.javaType open class Database1<T>: IDatabase<T>() { val tClass = this::class.supertypes[0].arguments[0].type!!.javaType as Class<T> } // Database2.kt import kotlin.reflect.jvm.javaType open class Database2<T>: IDatabase<T>() […]

Стандартное отклонение Kotlin с дженериками

Я хочу написать метод, который учитывает стандартное отклонение от предоставленных номеров. Вот как это выглядит: fun calculateSD(numArray: List<Int>): Double { var sum = 0.0 var standardDeviation = 0.0 for (num in numArray) { sum += num } val mean = sum / numArray.size for (num in numArray) { standardDeviation += Math.pow(num – mean, 2.0) } […]

Как я могу называть класс java как A: extends B реализует C в kotlin

У меня есть классы Java, как это показано ниже: public class SomeClass<T extends ClassA & InterfaceA> { public SomeClass(T a, T b) {} } class A extends ClassA implements InterfaceA{} class B extends ClassA implements InterfaceA{} Я пытаюсь создать экземпляр SomeClass в kotlin ниже, но я получаю ошибку компиляции: «infered type Any! не является подтипом […]

Java generics в Kotlin: используйте Java raw type в качестве параметра метода в Kotlin

Я смотрю на этот класс в Facebook sdk: public final class ShareDialog extends FacebookDialogBase<ShareContent, Sharer.Result> Я хочу иметь метод в Kotlin, который принимает его родительский класс, аналогичный следующему: fun shareToFacebook(shareDialog: FacebookDialogBase<ShareContent<*, *>, Sharer.Result>, activity: Activity) Но когда я пытаюсь называть его формой java: tournamentPresenter.shareToFacebook(new ShareDialog(this), this); Я получаю ошибку времени компиляции: Error:(751, 45) error: incompatible […]

Схема проектирования моста, приводящая к слишком большому количеству генериков

В настоящее время я работаю над чем-то для Minecraft, и я использую шаблон моста, поэтому мой код может использоваться с двумя отдельными серверными платформами Sponge и Bukkit с разными (но несколько похожими) API. У меня есть мой основной код, который зависит только от абстракций общих вещей в Minecraft, которые мне понадобятся позже, таких как игроки […]

Дисперсия типа Коттина и звездная проекция

Я прочитал книгу (Kotlin in Action, MEAP), документацию и статьи о проекции типа и проекции звезд, но все же проекция, похоже, написана очень сложной. Может ли кто-то объяснить простую идею идеи? Было бы неплохо иметь некоторые подходящие примеры. заранее спасибо

Как вы пишете вторичные конструкторы для класса с параметрами типа?

Предположим, что у меня есть следующий класс с параметром типа T (в этом примере он ограничен, чтобы помочь проиллюстрировать более поздний пример, но ошибка сохраняется, когда она неограничена): class GenericsTest<T : CharSequence>(private var cs: T) Теперь предположим, что я хочу добавить вторичный конструктор в этот класс. Как я могу это сделать? Моя первая (наивная) попытка […]

Intereting Posts