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