Как проверить версию scipy

Минимальный пример runnable

Уровень языка:

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.SOURCE)
@interface RetentionSource {}

@Retention(RetentionPolicy.CLASS)
@interface RetentionClass {}

@Retention(RetentionPolicy.RUNTIME)
@interface RetentionRuntime {}

public static void main(String[] args) {
    @RetentionSource
    class B {}
    assert B.class.getAnnotations().length == 0;

    @RetentionClass
    class C {}
    assert C.class.getAnnotations().length == 0;

    @RetentionRuntime
    class D {}
    assert D.class.getAnnotations().length == 1;
}

Уровень байткода: используя javap, мы замечаем, что аннотированный класс Retention.CLASS получает RuntimeInvisible :

#14 = Utf8               LRetentionClass;
[...]
RuntimeInvisibleAnnotations:
  0: #14()

, в то время как аннотация Retention.RUNTIME получает атрибут класса RuntimeVisible :

#14 = Utf8               LRetentionRuntime;
[...]
RuntimeVisibleAnnotations:
  0: #14()

и Runtime.SOURCE аннотированный .class не получает никакой аннотации.

Примеры для GitHub для игры.

63
задан snake_charmer 30 January 2015 в 16:37
поделиться