php实现注解,Java的注解是什么原理?

用户投稿 100 0

关于“php_java_注解”的问题,小编就整理了【2】个相关介绍“php_java_注解”的解答:

Java的注解是什么原理?

首先,从一个简单的注解开始,@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

public @interface Test {

String value() default "";

}

使用javap -verbose命令查看这个注解的class文件,发现这个注解被编译成了接口,并且继承了java.lang.annotation.Annotation接口,接口是不能直接实例化使用的,当在代码中使用这个注解,并使用getAnnotation方法获取注解信息时,JVM通过动态代理的方式生成一个实现了Test接口的代理对象实例,然后对该实例的属性赋值,value值就存在这个代理对象实例中。

如果顺着getAnnotation方法继续跟踪源代码,会发现创建代理对象是在AnnotationParser.java中实现的,这个类中有一个annotationForMap方法。在annotationForMap方法内部使用Proxy.newProxyInstance方法在运行时动态创建代理,AnnotationInvocationHandler实现了InvocationHandler接口,当调用代理对象的value()方法获取注解的value值,就会进入AnnotationInvocationHandler类中的invoke方法,深入invoke方法会发现,获取value值最终是从AnnotationInvocationHandler类的memberValues属性中获取的,memberValues是一个Map类型,key是注解的属性名,这里就是“value”,value是使用注解时设置的值。

php中的几种注释方法?

任何一门编程语言都有编程注释,注释的作用可以调试,可以描述代码的作用等等,说说那么PHP三种注释的方式

1, // 这是单行注释

2,# 这也是单行注释

3,/* */多行注释块

/*

这是多行注释块

它横跨了

多行

*/

PHP 代码中的注释不会被作为程序来读取和执行。它唯一的作用是供代码编辑者阅读。

到此,以上就是小编对于“php_java_注解”的问题就介绍到这了,希望介绍关于“php_java_注解”的【2】点解答对大家有用。

抱歉,评论功能暂时关闭!