что можно использовать в качестве альтернативы Object в Kotlin?

#java #kotlin

#java #kotlin

Вопрос:

Я пишу следующий код Kotlin, но при компиляции он выдает ошибку

Null can not be a value of a non-null type ByteArray это мой код

 fun myKafkaProducer(): MessageBusProducer<UUID?, Any>? {
         return if (serverProperties().isWAPKafkaSet) {
            val uuidSerializer = UUIDSerializer()
            val uuidDeserializer = UUIDDeserializer()
            val topic = serverProperties().hmsTopic
            val serializer = KafkaProperties.Serializers(Function<UUID, ByteArray> { uuid: UUID? -> uuidSerializer.serialize(null, uuid) }, label@ Function<Any, ByteArray> { sapMessage: Any ->
                try {
                    return@label ObjectMappers.getObjectMapper().writeValueAsString(sapMessage).toByteArray()
                } catch (e: JsonProcessingException) {
                    e.printStackTrace()
                }
                null /*showing error here */
            }, null,
                    null
            )
            // set WapKafkaHostPortAddress in env (configuration repo)

           return KafkaMessageBusProducerFactory.Builder<UUID, Any>()
                    .kafkaAddressPropertyName("portAddress")
                    .topic(topic)
                    .messageBusTypeSerializers(serializer)
                    .build().create(true)

        } else {
           return null
        }
    }
  

Я пытаюсь закодировать эквивалент Serializers<UUID, Object>

какой другой тип данных я могу использовать?

Ответ №1:

Эквивалентом Object в Kotlin является тип Any? . Только тогда вы сможете вернуть null, потому что тип Any не обнуляемый и Any? может быть нулевым.