Kotlin Programming

  1. Advanced Language Features
    1. Extensions
      1. Extension Functions
        1. Defining Extension Functions
          1. Member vs. Extension Functions
            1. Extension Function Resolution
            2. Extension Properties
              1. Companion Object Extensions
                1. Extensions with Nullable Receiver
                  1. Scope of Extensions
                  2. Generics
                    1. Generic Classes
                      1. Generic Functions
                        1. Generic Constraints
                          1. Type Constraints (Upper Bounds)
                            1. Multiple Upper Bounds
                              1. Variance
                                1. Declaration-Site Variance (`in`, `out`)
                                  1. Use-Site Variance (Type Projections)
                                    1. Covariance and Contravariance
                                    2. Star Projections (`*`)
                                      1. Reified Type Parameters
                                        1. Type Erasure
                                        2. Delegation
                                          1. Class Delegation (`by` Keyword)
                                            1. Interface Delegation
                                              1. Delegated Properties
                                                1. Property Delegation Syntax
                                                  1. Standard Delegates
                                                    1. `lazy`
                                                      1. `observable`
                                                        1. `vetoable`
                                                          1. `notNull`
                                                          2. Custom Delegates
                                                            1. Providing a Delegate
                                                          3. Operator Overloading
                                                            1. Overloadable Operators
                                                              1. Defining Operator Functions
                                                                1. Unary Operators
                                                                  1. Binary Operators
                                                                    1. Augmented Assignment Operators
                                                                      1. Comparison Operators
                                                                        1. Indexed Access Operators
                                                                          1. Invoke Operator
                                                                          2. Destructuring Declarations
                                                                            1. Component Functions
                                                                              1. Destructuring in Loops and Lambdas
                                                                                1. Destructuring Data Classes
                                                                                  1. Underscore for Unused Variables
                                                                                  2. Type Aliases
                                                                                    1. Creating Type Aliases
                                                                                      1. Use Cases
                                                                                        1. Generic Type Aliases
                                                                                          1. Function Type Aliases
                                                                                          2. Annotations
                                                                                            1. Built-in Annotations
                                                                                              1. `@JvmStatic`
                                                                                                1. `@JvmOverloads`
                                                                                                  1. `@JvmField`
                                                                                                    1. `@Throws`
                                                                                                    2. Custom Annotations
                                                                                                      1. Annotation Targets and Retention
                                                                                                        1. Annotation Parameters
                                                                                                          1. Meta-Annotations
                                                                                                          2. Reflection
                                                                                                            1. The `KClass` Type
                                                                                                              1. Class References
                                                                                                                1. Function References
                                                                                                                  1. Property References
                                                                                                                    1. Accessing Properties and Methods at Runtime
                                                                                                                      1. Use Cases for Reflection
                                                                                                                        1. Reflection Performance Considerations