The ability to examine, load, and interact with classes, fields, and methods at runtime is referred to as Kotlin reflection. In this article on Kotlin reflection, we will be learning about various topics of Kotlin reflection in detail.

What is Kotlin Reflection?

In Kotlin, Reflection is a combination of language and library capabilities that allow you to introspect a program while it's running. Kotlin reflection is used at runtime to utilize a class and its members, such as properties, methods, and constructors. It is also used to create instances of classes, inspect annotations, lookup functions, and invoke them.


Kotlin features its own reflection API, which is built in a clean, functional style, in addition to the Java reflection API.

Now, let us understand some features of the Kotlin reflection.

Post Graduate Program: Full Stack Web Development

in Collaboration with Caltech CTMEEnroll Now
Post Graduate Program: Full Stack Web Development

Features of Kotlin Reflection

  • It provides access to properties and nullable types that aren't available in Java.
  • Kotlin Reflection includes a few extra features over Java reflection.
  • Kotlin reflection aids in gaining access to JVM code written by a language.

Now that we've understood the features of Kotlin reflection, let's go ahead and understand Kotlin class references.

Kotlin Class References

At runtime, the class reference operator is used to get a reference to a statically known class. A class's instances can also be utilized to obtain a reference to a class. Bounded class references are the name for these types of references. When employing instances of a class to obtain a reference, the reference obtained corresponds to the type to which the instance of the class belongs. In the case of inheritance, this concept is extremely useful.



Let us take a look at this example.


Here xyz is the object, Reflection is the name of the class that we are using with class literal, and using the class reference operator, we are obtaining the class reference.

After that, using the object or instance of the class, we obtain the reference to the class, and that reference is known as a bounded class reference.

Below is the output of the above code.


Next is Kotlin Function references.

New Course: Full Stack Development for Beginners

Learn Git Command, Angular, NodeJS, Maven & MoreEnroll Now
New Course: Full Stack Development for Beginners

Kotlin Function References

Every named function defined in Kotlin can be referenced via a functional reference. To do so, use the:: operator before the function name. provided as parameters to other functions. In the case of overloaded functions, the function type might be provided explicitly or inferred from the text.


Here in the example, We're sending the Negative function to another function called filter, which in turn is calling the Negative function.

On printing the above program, all the negative values will get printed.


Now, moving on to Kotlin property references.

Kotlin Property References

With the help of the :: operator, we can get a property reference in the same way we get a function reference. The class name should also be mentioned with the :: operator if the property belongs to a class. Because property references allow properties to be considered objects, we can use the get and set functions to get or alter the value of a property.

Let’s have a look at an example.


As we can see in this example, the expression ::variable allows you to retrieve its property; by using name, it prints the name; by using get it prints its value, and using set method, it updates the value of the property.


Full Stack Web Developer Course

To become an expert in MEAN StackView Course
Full Stack Web Developer Course

Kotlin Constructor References 

The references to a class' constructors are obtained in the same way that the references to methods and properties are obtained. These references can be used to indicate a function that returns a type-specific object. 


The :: operator is used to refer to constructors, followed by the class name. Using ::Sub, we can easily call the sub constructor.

Looking to accelerate your career as a skilled Full Stack Web Developer? Leverage Caltech CTME's academic excellence in a unique bootcamp-style Post Graduate Program in Full Stack Web Development. Enroll Now!


In this tutorial on Kotlin reflection, you understood what is a Kotlin reflection and learned various topics, including Kotlin class references and function references. You learned about the Features of Kotlin reflection, Kotlin property references, and constructor references with the help of examples.

If you are looking to build a software development career, you can check the Post-Graduate Program in Full Stack Web Development by Simplilearn. It can be the ideal solution to help you build your career in the right direction.

Do you have any questions about this Kotlin reflection tutorial? If you do, then you can put them in the comments section. We’ll help you solve your queries at the earliest.

About the Author

Harsh BhardwajHarsh Bhardwaj

Harsh is a Research Analyst at Simplilearn. He has a good hand at C++, Java, CSS, SQL, and a good grasp of Kotlin language. Harsh is quite interested in traveling, spirituality, and playing football.

View More
  • Disclaimer
  • PMP, PMI, PMBOK, CAPM, PgMP, PfMP, ACP, PBA, RMP, SP, and OPM3 are registered marks of the Project Management Institute, Inc.