# Reflection Bug?

**URL:** <https://discuss.kotlinlang.org/t/reflection-bug/12694>\
**Category:** Language Design\
**Created:** [May 11, 2019, 3:14pm UTC](https://discuss.kotlinlang.org/t/reflection-bug/12694 "2019-05-11T15:14:21Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Angelo\_Salvade](https://avatars.discourse-cdn.com/v4/letter/a/b2d939/32.png) [@Angelo\_Salvade](https://discuss.kotlinlang.org/u/Angelo_Salvade)\
**Post date:** [May 11, 2019, 3:14pm UTC](https://discuss.kotlinlang.org/t/reflection-bug/12694/1 "2019-05-11T15:14:21Z")

</div>

Please have a look at the following program:

```
open class OpenClass
class FinalClass

class Demo(
    val llo: List<OpenClass>,
    val llf: List<FinalClass>,
    val lmo: MutableList<OpenClass>,
    val lmf: MutableList<FinalClass>,
    var rlo: List<OpenClass>,
    var rlf: List<FinalClass>,
    var rmo: MutableList<OpenClass>,
    var rmf: MutableList<FinalClass>
)

fun main() {
    Demo::class.java.declaredFields.forEach {
        println("${it.name}: ${it.genericType}")
    }
}

```

It prints:

```
llo: java.util.List<OpenClass>
llf: java.util.List<FinalClass>
lmo: java.util.List<OpenClass>
lmf: java.util.List<FinalClass>
rlo: java.util.List<? extends OpenClass>
rlf: java.util.List<FinalClass>
rmo: java.util.List<OpenClass>
rmf: java.util.List<FinalClass>

```

Why has only property ‘rlo’ a WildcardType?

---

<div class="post-metadata">

**Author:** ![ilya.gorbunov](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/ilya.gorbunov/32/1645_2.png) [@ilya.gorbunov](https://discuss.kotlinlang.org/u/ilya.gorbunov)\
**Post date:** [May 11, 2019, 9:12pm UTC](https://discuss.kotlinlang.org/t/reflection-bug/12694/2 "2019-05-11T21:12:16Z")

</div>

That’s how Kotlin generates generic types for a more convenient usage from Java. It emulates declaration site variance with the use site variance. See more details about it and how to change that behavior here: [https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#variant-generics](https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html#variant-generics)

---

<div class="post-metadata">

**Author:** ![Angelo\_Salvade](https://avatars.discourse-cdn.com/v4/letter/a/b2d939/32.png) [@Angelo\_Salvade](https://discuss.kotlinlang.org/u/Angelo_Salvade)\
**Post date:** [May 12, 2019, 7:19am UTC](https://discuss.kotlinlang.org/t/reflection-bug/12694/3 "2019-05-12T07:19:57Z")

</div>

Thanks a lot for the quick explanation.  
So it’s obviously not a bug but a feature 🙂
