代码之家  ›  专栏  ›  技术社区  ›  user79074

为什么注释没有保留在类文件[duplicate]中

  •  -1
  • user79074  · 技术社区  · 6 年前

    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface MyAnnot {
        public String value();
    }
    

    @MyAnnot("somevalue")
    public interface MyClass
    {
    }
    

    如果我运行以下命令:

    爪哇语我的类.java

    爪哇语MyClass.class类

    那么我的输出是:

    公共接口MyClass{}

    2 回复  |  直到 5 年前
        1
  •  1
  •   Savior    6 年前

    使用 -v -verbose

    > javap -c -v MyClass.class 
    
    [...]
    
    SourceFile: "MyClass.java"
    RuntimeVisibleAnnotations:
      0: #24(#25=s#26)
        org.example.MyAnnot(
          value="somevalue"
        )
    
        2
  •  -1
  •   Steaton    6 年前

    C:\Development\stack>javap -v MyClass.class
    Classfile /C:/Development/stack/MyClass.class
      Last modified 12-Sep-2018; size 172 bytes
      MD5 checksum 9ca4a6c712dadb0bedeede816c57c1b4
      Compiled from "MyClass.java"
    public interface MyClass
      minor version: 0
      major version: 52
      flags: ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
    Constant pool:
       #1 = Class              #9             // MyClass
       #2 = Class              #10            // java/lang/Object
       #3 = Utf8               SourceFile
       #4 = Utf8               MyClass.java
       #5 = Utf8               RuntimeVisibleAnnotations
       #6 = Utf8               LMyAnnot;
       #7 = Utf8               value
       #8 = Utf8               somevalue
       #9 = Utf8               MyClass
      #10 = Utf8               java/lang/Object
    {
    }
    SourceFile: "MyClass.java"
    RuntimeVisibleAnnotations:
      0: #6(#7=s#8)