gpt4 book ai didi

java - Java如何实现注解(元数据)中声明的方法?

转载 作者:行者123 更新时间:2023-12-01 10:19:33 25 4
gpt4 key购买 nike

从我正在阅读的书中拍摄的图像,

enter image description here

标题说明了一切。请建议或给我一些关于幕后发生的事情。

例如,Hibernate Bean Validation API 中的 @NotNull 是如何工作的?

我知道通过Reflection API,我们可以做这样的事情,

class Meta {

// Annotate a method.
@MyAnno(str = "Annotation Example", val = 100)
public static void myMeth() {

Meta ob = new Meta();
// Obtain the annotation for this method
// and display the values of the members.
try {
// First, get a Class object that represents
// this class.
Class c = ob.getClass();
// Now, get a Method object that represents
// this method.
Method m = c.getMethod("myMeth");
// Next, get the annotation for this class.
MyAnno anno = m.getAnnotation(MyAnno.class);
// Finally, display the values.
System.out.println(anno.str() + " " + anno.val());
} catch (NoSuchMethodException exc) {
System.out.println("Method Not Found.");
}
}

public static void main(String args[]) {

myMeth();
}
}

最佳答案

注释没有任何实现的代码,实际上它们本身不执行任何操作。

为了让它们“工作”,应该有某种注释处理器(初始化器、加载器或任何与注释对象一起工作的类)。该注释处理器检查注释对象注释并更改其处理方式。

例如 Spring 注解处理器,在初始化对象时,会查找 @Autowired 字段,以填充 Autowiring 字段。

Hibernates @NotNull 也是如此。它实际上没有做任何事情。然而,Hibernate 在持久化你的对象时,会检查那里是否应该有一些东西。

关于java - Java如何实现注解(元数据)中声明的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35695365/

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