1*3c321d95SSadaf EbrahimiCallable References 2*3c321d95SSadaf Ebrahimi=================== 3*3c321d95SSadaf Ebrahimi 4*3c321d95SSadaf Ebrahimi[Callable references][callable-references] to constructors, functions, and properties may be emitted 5*3c321d95SSadaf Ebrahimivia: 6*3c321d95SSadaf Ebrahimi 7*3c321d95SSadaf Ebrahimi- `ClassName.constructorReference()` for constructors 8*3c321d95SSadaf Ebrahimi- `MemberName.reference()` for functions and properties 9*3c321d95SSadaf Ebrahimi 10*3c321d95SSadaf EbrahimiFor example, 11*3c321d95SSadaf Ebrahimi 12*3c321d95SSadaf Ebrahimi```kotlin 13*3c321d95SSadaf Ebrahimival helloClass = ClassName("com.example.hello", "Hello") 14*3c321d95SSadaf Ebrahimival worldFunction: MemberName = helloClass.member("world") 15*3c321d95SSadaf Ebrahimival byeProperty: MemberName = helloClass.nestedClass("World").member("bye") 16*3c321d95SSadaf Ebrahimi 17*3c321d95SSadaf Ebrahimival factoriesFun = FunSpec.builder("factories") 18*3c321d95SSadaf Ebrahimi .addStatement("val hello = %L", helloClass.constructorReference()) 19*3c321d95SSadaf Ebrahimi .addStatement("val world = %L", worldFunction.reference()) 20*3c321d95SSadaf Ebrahimi .addStatement("val bye = %L", byeProperty.reference()) 21*3c321d95SSadaf Ebrahimi .build() 22*3c321d95SSadaf Ebrahimi 23*3c321d95SSadaf EbrahimiFileSpec.builder("com.example", "HelloWorld") 24*3c321d95SSadaf Ebrahimi .addFunction(factoriesFun) 25*3c321d95SSadaf Ebrahimi .build() 26*3c321d95SSadaf Ebrahimi``` 27*3c321d95SSadaf Ebrahimi 28*3c321d95SSadaf Ebrahimiwould generate: 29*3c321d95SSadaf Ebrahimi 30*3c321d95SSadaf Ebrahimi```kotlin 31*3c321d95SSadaf Ebrahimipackage com.example 32*3c321d95SSadaf Ebrahimi 33*3c321d95SSadaf Ebrahimiimport com.example.hello.Hello 34*3c321d95SSadaf Ebrahimi 35*3c321d95SSadaf Ebrahimifun factories() { 36*3c321d95SSadaf Ebrahimi val hello = ::Hello 37*3c321d95SSadaf Ebrahimi val world = Hello::world 38*3c321d95SSadaf Ebrahimi val bye = Hello.World::bye 39*3c321d95SSadaf Ebrahimi} 40*3c321d95SSadaf Ebrahimi``` 41*3c321d95SSadaf Ebrahimi 42*3c321d95SSadaf EbrahimiTop-level classes and members with conflicting names may require aliased imports, as with 43*3c321d95SSadaf Ebrahimi[member names](m-for-members.md). 44*3c321d95SSadaf Ebrahimi 45*3c321d95SSadaf Ebrahimi [callable-references]: https://kotlinlang.org/docs/reference/reflection.html#callable-references 46