Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

262
Visualizações
¿Es posible pasar el tipo nulo en lugar del parámetro de tipo genérico?

Voy a utilizar el siguiente método de las extensiones Spring Data Kotlin:

 inline fun <reified T : Any> MongoOperations.bulkOps(bulkMode: BulkMode, collectionName: String? = null): BulkOperations

La pregunta es: ¿puedo evitar de alguna manera especificar T suponiendo que no quiero proporcionar un nombre de clase de entidad (eso es porque especificaré explícitamente collectionName y, en este caso, el tipo de clase puede ser null ). Me gustaría escribir algo como:

 val ops = mongoTemplate.bulkOps<null>(BulkOperations.BulkMode.UNORDERED, collectionName = "i_know_better")

¿Existe un tipo literal para null con el que pueda parametrizar bulkOps ?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Creo que la respuesta corta es no.

Parece que confundes tipos con valores. null es un valor y no un tipo, por lo que no se puede usar como tipo en métodos genéricos.

En su ejemplo específico, incluso si pudiera usar nulo, mirando el código, ¿qué esperaría que sucediera?

 @Suppress("EXTENSION_SHADOWED_BY_MEMBER") inline fun <reified T : Any> MongoOperations.bulkOps(bulkMode: BulkMode, collectionName: String? = null): BulkOperations = if (collectionName != null) bulkOps(bulkMode, T::class.java, collectionName) else bulkOps(bulkMode, T::class.java)

Como puede ver, siempre se llama a T::class.java . ¿Cuál sería el resultado de null::class.java ?

No estoy familiarizado con Spring Data, por lo que realmente no puedo proporcionar una alternativa, pero diría que necesita buscar otro método o usar una clase apropiada aquí. El tipo genérico está marcado como T : Any , por lo que presumiblemente puede ser cualquier tipo que no admita valores NULL. Me pregunto si la Unit funcionaría. Nuevamente, no estoy seguro de para qué se usa esta clase.

over 4 years ago · Santiago Trujillo Relatório

0

Para responder a la pregunta en general, puede usar Nothing? para representar el tipo que solo contiene el valor null .

Dicho esto, como ya dijo @Fred, el método que está considerando aquí establece explícitamente T : Any , lo que significa que solo se permiten tipos que no aceptan valores NULL. Y tiene sentido dado que la función está accediendo a la clase de T

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda