Na verdade, eu tinha essa pergunta exata há 30 minutos, então comecei a procurar e não consegui encontrar nenhuma solução ou solução alternativa para isso, mas durante a pesquisa encontrei esta seção no site da Kotlinglang que afirma que:
Observe que as extensões podem ser definidas com um tipo de receptor anulável. Tais extensões podem ser chamadas em uma variável de objeto, mesmo que seu valor seja nulo.
Então, eu tive a idéia mais louca de todos os tempos: por que não definir uma função de extensão com um receptor nulo (sem realmente usá-lo) e depois chamá-lo em um objeto nulo! Então eu tentei isso, e funcionou muito bem, mas parecia tão feio. Foi assim:
(null as Type?).staticFunction(param1, param2)
Então, eu contornei isso criando um val no meu arquivo de extensões do tipo receptor que tinha um valor nulo e depois o usei na minha outra classe. Então, como exemplo, aqui está como eu implementei uma função de extensão "estática" para a Navigation
classe no Android: No meu arquivo NavigationExtensions.kt:
val SNavigation: Navigation? = null
fun Navigation?.createNavigateOnClickListener(@IdRes resId: Int, args: Bundle? = null, navOptions: NavOptions? = null,
navigationExtras: Navigator.Extras? = null) : (View) -> Unit {
//This is just implementation details, don't worry too much about them, just focus on the Navigation? part in the method declaration
return { view: View -> view.navigate(resId, args, navOptions, navigationExtras) }
}
No código que o usa:
SNavigation.createNavigateOnClickListener(R.id.action_gameWonFragment_to_gameFragment)
Obviamente, este não é um nome de classe, é apenas uma variável do tipo de classe que possui um valor nulo. Isso é obviamente feio no lado do criador de extensões (porque eles precisam criar a variável) e no lado do desenvolvedor (porque eles precisam usar o SType
formato em vez do nome real da classe), mas é o mais próximo que pode ser alcançado agora comparado às funções estáticas reais. Felizmente, os criadores do idioma Kotlin responderão ao problema que foi criado e adicionarão esse recurso ao idioma.