Size: a a a

Kotlin Community

2020 June 12

MT

Mikhail T in Kotlin Community
Quantum Harmonizer
AspectJ же наследует твои классы? Надо open сделать?
open делать которые классы?
источник

QH

Quantum Harmonizer in Kotlin Community
Mikhail T
open делать которые классы?
без контекста не могу сказать
источник

MT

Mikhail T in Kotlin Community
Quantum Harmonizer
без контекста не могу сказать
для рест методов на джава есть
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestApiExceptionHandler extends ResponseEntityExceptionHandler {

это все работает без изменений, как задумано

но для рест методов на котлине, у меня есть
@ControllerAdvice
class RestApiExceptionHandlerKotlin
...
   @ExceptionHandler(Exception::class)
   fun JsonParseExceptionHandler(exception: Exception): ResponseEntity<ErrorResponse> {
       return ResponseEntity(ErrorResponse("JSON Error", exception.message ?: "invalid json"), HttpStatus.BAD_REQUEST)
   }


и это не работает для котлин рест методов, метод с невалидным объектом просто возвращает ошибку со статусом 400, и все
источник

QH

Quantum Harmonizer in Kotlin Community
Mikhail T
для рест методов на джава есть
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
public class RestApiExceptionHandler extends ResponseEntityExceptionHandler {

это все работает без изменений, как задумано

но для рест методов на котлине, у меня есть
@ControllerAdvice
class RestApiExceptionHandlerKotlin
...
   @ExceptionHandler(Exception::class)
   fun JsonParseExceptionHandler(exception: Exception): ResponseEntity<ErrorResponse> {
       return ResponseEntity(ErrorResponse("JSON Error", exception.message ?: "invalid json"), HttpStatus.BAD_REQUEST)
   }


и это не работает для котлин рест методов, метод с невалидным объектом просто возвращает ошибку со статусом 400, и все
класс, в котором «котлин рест методы», надо сделать нефинальным
источник

MT

Mikhail T in Kotlin Community
Quantum Harmonizer
класс, в котором «котлин рест методы», надо сделать нефинальным
применил open - не помогло
что интересно, когда выключаю RestApiExceptionHandler.java котлин хандлер начинает работать...
источник

IK

Iliya Kuznetsov in Kotlin Community
Добрый день, можно ли через kotlinx.seriallization  net.devrieze:xmlutil-serialization-jvm   одним классом описать такую структуру, или надо дробить на много классов?
<a b="c">
 <d>
  <e f="g" h="i"/>
  <e f="g" h="i"/>
</d></a>

?
источник

IK

Iliya Kuznetsov in Kotlin Community
искал в примерах, вижу @XmlChildrenName но не совсем понимаю как это в моём случае реализовать
источник

IK

Iliya Kuznetsov in Kotlin Community
через много классов могу но хочется красивее
источник

IK

Iliya Kuznetsov in Kotlin Community
например для <e> хочется просто mapOf всех атрибутов, без отдельных полей класса f и h
источник

IK

Iliya Kuznetsov in Kotlin Community
по mapOf нашёл решение - unknownChildHandler
источник

AN

Alexander Nozik in Kotlin Community
@h0tk3y better-parse будет релизиться дальше альфы? Хочу его затащить в kmath для динамических выражений.
источник

LS

Lev Shagalov in Kotlin Community
Чтобы обрабатывать все сообщения из канала через Flow, нужно использовать consumeAsFlow или onEach?
источник

SZ

Sergey Zolotov in Kotlin Community
источник

AH

Ayrat Hudaygulov in Kotlin Community
Есть способ выразить одну функцию через другую? у них абсолютно одинаковые экспрешны внутри в целом
источник

AH

Ayrat Hudaygulov in Kotlin Community
Вот так выглядит flatMapCo через flatMap
источник

QH

Quantum Harmonizer in Kotlin Community
Ayrat Hudaygulov
Есть способ выразить одну функцию через другую? у них абсолютно одинаковые экспрешны внутри в целом
можно сделать верхнюю функцию inline. Она в suspend-контексте будет вести себя, как нижняя
источник

AH

Ayrat Hudaygulov in Kotlin Community
ну наоброт тоже понятно - пишет не хватает суспенда
источник

AH

Ayrat Hudaygulov in Kotlin Community
Quantum Harmonizer
можно сделать верхнюю функцию inline. Она в suspend-контексте будет вести себя, как нижняя
чорт меня дери, магия.
Сработало
источник

VS

Vladimir Sitnikov in Kotlin Community
Есть Java интерфейс, у которого возвращаемое значение отмечено как @Nonnull.

public interface Transformer<OUT, IN> {
   OUT transform(IN in);
}


Но в некоторых случаях допускается возвращать null:

*
@param transformer The transformer to apply to values. May return {@code null}, in which case the provider will have no value.
* @since 4.3
*/
<S> Provider<S> map(Transformer<? extends S, ? super T> transformer);

При вызове такого из Kotlin возникает проблема: Kotlin видит nonnull и запрещает возвращать null. Есть какой-нибудь способ сказать компилятору «да, знаю что там nonnull, но вот в этом месте нужно игнорировать»?
источник

D

Denys in Kotlin Community
Vladimir Sitnikov
Есть Java интерфейс, у которого возвращаемое значение отмечено как @Nonnull.

public interface Transformer<OUT, IN> {
   OUT transform(IN in);
}


Но в некоторых случаях допускается возвращать null:

*
@param transformer The transformer to apply to values. May return {@code null}, in which case the provider will have no value.
* @since 4.3
*/
<S> Provider<S> map(Transformer<? extends S, ? super T> transformer);

При вызове такого из Kotlin возникает проблема: Kotlin видит nonnull и запрещает возвращать null. Есть какой-нибудь способ сказать компилятору «да, знаю что там nonnull, но вот в этом месте нужно игнорировать»?
Очень интересный подход к проектированию. :)

К счастью, такого в Котлине нет, насколько я знаю. Даже если кастить явно (e.g. return null as String) - компилятор генерирует проверки и упадёт в рантайме.
источник