Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

259
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!