gpt4 book ai didi

java - 是否有用于向文件中添加额外信息的任何 Java 注释?

转载 作者:行者123 更新时间:2023-11-30 06:22:12 24 4
gpt4 key购买 nike

是否有任何 java 注释用于向类的字段添加额外信息?

我需要类似以下示例的内容,以便在运行时通过反射访问:

public class A
{
@Description("my field")
public String name = "";
}

最佳答案

自己写这样的东西并不难。例如:

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Description {
String value() default "";
}

然后使用它:

public class MyClass {

@Description("my field")
private String name = "";
}

并获取:

Field nameField = MyClass.class.getDeclaredField("name");
Description d = nameField.getAnnotation(Description.class);
System.out.println(d.value()); // Prints "my field"

关键部分:

  • 请注意,value 是一个特殊属性。它不需要您指定名称。如果您不使用 value,则必须执行更类似于 @Description(desc = "my field") 的操作并直接引用它的名称。
  • default 指定默认值。在这里意义不大,但了解一下还是很有用的。这意味着您可以在不指定 value 的情况下编写 @Description,这是合法的。在这种情况下,调用 value() 将返回空字符串,因为这是默认值。如果您没有指定默认值,则需要提供一个值。
  • @Target 用于指定可以在哪些元素上使用注解。在本例中,我们仅指定了 FIELD
  • @Retention 指定保留多长时间以及是否可以访问。 SOURCE 表示编译后丢失。当您只需要它进行注释处理时,这很有用。 CLASS 表示它存储在字节码中,但您不能通过反射访问它。 RUNTIMECLASS 相同,只是您可以通过反射访问它。

关于java - 是否有用于向文件中添加额外信息的任何 Java 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19651475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com