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