You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Daniil Ovchinnikov (JIRA)" <ji...@apache.org> on 2017/05/10 06:43:04 UTC

[jira] [Updated] (GROOVY-8152) Weird .class references

     [ https://issues.apache.org/jira/browse/GROOVY-8152?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniil Ovchinnikov updated GROOVY-8152:
---------------------------------------
    Description: 
{code}
println(String)                         // class java.lang.String
println(String.class)                   // class java.lang.String
println(String.class.class)             // class java.lang.String
println(String.class.class.class)       // class java.lang.Class
{code}

While I understand that the first and the second lines are equivalent, I don't get behaviour of the third, which causes the following to work:
{code}
println(String[].class[].class.class[]) // class [[[Ljava.lang.String;
{code}

Expected result:
{code}
assert String.class.class == String.class.getClass()
assert String[].class.class == String[].class.getClass()
{code}

  was:
{code}
println(String)                         // class java.lang.String
println(String.class)                   // class java.lang.String
println(String.class.class)             // class java.lang.String
println(String.class.class.class)       // class java.lang.Class
{code}

While I understand that the first and the second lines are equivalent, I don't get behaviour of the third, which causes the following:
{code}
println(String[].class[].class.class[]) // class [[[Ljava.lang.String;
{code}

Expected result:
{code}
assert String.class.class == String.class.getClass()
assert String[].class.class == String[].class.getClass()
{code}


> Weird .class references
> -----------------------
>
>                 Key: GROOVY-8152
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8152
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.5.0-alpha-1, 2.4.10
>            Reporter: Daniil Ovchinnikov
>
> {code}
> println(String)                         // class java.lang.String
> println(String.class)                   // class java.lang.String
> println(String.class.class)             // class java.lang.String
> println(String.class.class.class)       // class java.lang.Class
> {code}
> While I understand that the first and the second lines are equivalent, I don't get behaviour of the third, which causes the following to work:
> {code}
> println(String[].class[].class.class[]) // class [[[Ljava.lang.String;
> {code}
> Expected result:
> {code}
> assert String.class.class == String.class.getClass()
> assert String[].class.class == String[].class.getClass()
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)