Articles of enums

Правильно расширить класс Widget с помощью Kotlin

Код ниже в основном изменяет состояние виджета Button: enum class State { unable, enable } fun configureState(currentState:State, button:Button ,colorInt :Int = Color.BLACK) = when (currentState) { State.unable -> { button.isClickable = false button.setBackgroundColor(Color.LTGRAY) button.setTextColor(Color.WHITE) } State.enable -> { button.isClickable = true button.setBackgroundColor(colorInt) button.setTextColor(Color.WHITE) } } Цель состоит в том, чтобы расширить Button Widget и избежать […]

Как получить значение перечисления типа raw из класса enum и строки в kotlin

У меня есть следующий код в java: Enum getEnumValue(Class<?> enumClass, String value) { return Enum.valueOf((Class<Enum>) enumClass, value); } Как переписать это в Котлине? Обновить enumValueOf<>() в этом случае неприменима, потому что я не знаю фактического параметра типа, у меня есть объект Class<?> с неизвестным типом ( Class<*> в kotlin) и строка имени. Класс известен как […]

Как я могу объявить аргумент в Kotlin, который принимает (только) перечисления

Например: я хочу объявить исключение: class UnexpectedEnumException(enum: Enum…) : Exception("Unexpected enum $enum") В Java я могу это сделать public class UnexpectedEnumException extends RuntimeException { public UnexpectedEnumException(Enum<?> en) { super("Unexpected enum " + en); }

Как объявить параметр расширения для общих помощников перечислений

Я хотел бы иметь .MAX на общих перечислениях для представления значений. Я попытался немного поиграть, но я не мог понять. Когда я пишу, например, это: val Enum.Companion.MAX get() = enumValues().size Он жалуется на enumValues() что Ошибка вывода типа: недостаточно информации для вывода параметра T в inline fun> enumValues ​​(): Array Пожалуйста, укажите это явно. Это […]

Как использовать тип перечисления Postgresql через Kotlin Exposed ORM?

Я добавил некоторые типы Postgresql для Exposed как расширения. Он имеет два готовых типа с именем enumeration и enumerationByName . Я тестировал оба из них без успеха для сопоставления типа перечисления типа postgre с классом enum класса Kotlin. При чтении и записи он вызывает ошибку enum class TicketStatus(val status: String) { Open("open"), Close("close"), InProgress("in_progress") } […]

Kotlin enum реализует интерфейс Java с объявлением String name ()

У меня есть проект Kotlin, где я использую зависимость библиотеки Java, которая определяет интерфейс с объявлением метода String name (). В Java я могу использовать эти интерфейсы в объявлениях перечислений, где метод String name () неявно реализуется перечислением. public interface Aspect { int index(); String name(); } В Java это возможно: public enum CollisionType implements […]

В Kotlin, как я могу обойти конфликты наследуемых объявлений, когда класс enum реализует интерфейс?

Я определяю класс перечисления, который реализует Neo4j RelationshipType : enum class MyRelationshipType : RelationshipType { // … } Я получаю следующую ошибку: Inherited platform declarations clash: The following declarations have the same JVM signature (name()Ljava/lang/String;): fun <get-name>(): String fun name(): String Я понимаю, что метод name() из класса Enum и метод name() из интерфейса RelationshipType […]

Kotlin: Коллекция не имеет ни общего типа, ни OneToMany.targetEntity ()

У меня есть класс Enum RoleType public enum RoleType { SYSTEM_ADMIN, PROJECT_ADMIN, USER; } В моем классе сущности User меня есть следующее сопоставление для коллекции enum. Это код Java : @JsonProperty @ElementCollection @Enumerated(EnumType.STRING) @CollectionTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id")) private Set<RoleType> roles; Я преобразовал этот класс сущности User в Kotlin и вот код: […]

Enum аннотации в Котлине

У меня есть перечисление, которое сериализуется / десериализируется Gson: enum class PacketType { NONE; [SerializedName("request")] REQUEST; [SerializedName("response")] RESPONSE; [SerializedName("event")] EVENT; } К сожалению, я заметил, что Gson игнорирует аннотации SerializedName и использует имена верхнего регистра для значений перечисления. Я решил выяснить, почему сериализация не работает так, как предполагалось, и выяснил, что Котлин оставляет все аннотации […]

Как я могу создать «статический» метод для перечисления в Котильне?

У Kotlin уже есть число «статических» методов для класса enum, таких как values и valueOf Например, у меня есть перечисление public enum class CircleType { FIRST SECOND THIRD } Как добавить статический метод, например random(): CircleType ? Функции расширения, похоже, не для этого случая.