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

90
Views
Choque de extensiones de Kotlin

Si tengo un jar, en el classpath, donde he creado una función de extensión en la clase String por el bien del argumento y tengo otro jar con la misma función de extensión en String, ¿cómo resolverá Kotlin los dos?

Supongo que si ambas funciones están definidas en los mismos paquetes, ¿habrá un conflicto?

Pero si son paquetes diferentes, ¿cómo puedo distinguir las dos extensiones?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

De hecho, si están en el mismo paquete, no se compilará. Para el otro escenario, supongamos que tiene dos archivos con dos paquetes diferentes, que contienen funciones de extensión con la misma firma:

Primer archivo:

 package ext1 fun Int.print() = print(this)

Segundo archivo:

 package ext2 fun Int.print() = print(this * 2)

Y este archivo donde estás tratando de usarlo:

 package main fun main(args: Array<String>) { 42.print() }

IntelliJ en realidad le dará un cuadro de diálogo de importación donde puede elegir cuál desea usar:

ingrese la descripción de la imagen aquí

Puedes importar uno de ellos así:

 import ext1.print

Y si necesita usar el otro también, puede cambiarle el nombre con la palabra clave as . Esta palabra clave sirve para importaciones en general, clases con el mismo nombre, etc.

 import ext2.print as print2

Entonces este programa compila e imprime 4284 :

 package main import ext1.print import ext2.print as print2 fun main(args: Array<String>) { 42.print() 42.print2() }

Como nota rápida, la que importa con la palabra clave as será un poco más difícil de usar, ya que la función de autocompletar no parece captarla bien, al seleccionar la segunda opción aquí solo se completa la llamada a 42.print() .

ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Trujillo Report

0

Entonces, dado que la función de extensión en kotlin es solo una función estática, otras funciones se distinguirán por importación.

También puede crear un alias para una de las funciones de extensión para una mayor legibilidad:

 import by.bkug.extensions.helpers.extension import by.bkug.extensions.extension as extension1 fun test() { myType().extension() // by.bkug.extensions.helpers.extension myType().extention1() // by.bkug.extensions.extension }
about 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!