Anonymous classes are not final according to reflection API

Remi Forax forax at univ-mlv.fr
Tue Jun 23 06:50:40 UTC 2015


Hi Victor,
did you have open a bug for that ?

cheers,
Rémi

On 06/22/2015 05:56 PM, Victor Rudometov wrote:
> This seems to be a reflection bug, since ACC_FINAL is present in 
> Test12$1.class file:
>
> final class test.Test12$1 extends test.Test12$Foo<java.lang.Integer>
>   minor version: 0
>   major version: 52
>   flags: ACC_FINAL, ACC_SUPER
>
> Thanks.
> Victor.
>
> On 22-Jun-15 18:35, Remi Forax wrote:
>> I wonder if it's not a reflection bug,
>> did you check with 'javap -c -verbose' the modifiers of the generated 
>> class (something like Test12$1.class) ?
>>
>> cheers,
>> Rémi
>>
>> On 06/22/2015 05:17 PM, Georgiy Rakov wrote:
>>> Hello,
>>>
>>> if I understand correctly according to following assertion from JLS 
>>> 15.9.5 anonymous classes are always final:
>>>
>>>     An anonymous class is always implicitly final (§8.1.1.2).
>>>
>>> But reflection API reports that the class is not final. Namely let's 
>>> consider following code:
>>>
>>>     import java.lang.reflect.Modifier;
>>>
>>>     public class Test12 {
>>>         static class Foo<T> {}
>>>
>>>         public static void main(String argv[]) {
>>>             Foo<Integer> foo = new Foo<>() {};
>>>             if ( (foo.getClass().getModifiers() & Modifier.FINAL) !=
>>>     0 ) {
>>>                 System.out.println("final, modifiers: " +
>>>     foo.getClass().getModifiers());
>>>             } else {
>>>                 System.out.println("not final, modifiers: " +
>>>     foo.getClass().getModifiers());
>>>             }
>>>         }
>>>     }
>>>
>>> On JDK9b69 it reports:
>>>
>>>     not final, modifiers: 0
>>>
>>> Could you please tell if you consider this as a discrepancy between 
>>> spec and javac (VM?) which should be fixed.
>>>
>>> Thank you,
>>> Georgiy.
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20150623/5302fc1b/attachment.html>


More information about the compiler-dev mailing list