A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 周朋飞 于 2012-6-22 15:15 编辑

  最近在看张老师的视频关于注解的那部分的时候,提到注解@Retetion 有三个取值,分别对应java源文件  class文件 内存当中的字节码文件,我原来一直以为编译之后就是字节码了  有比较清楚这块的吗

2 个回复

倒序浏览
首先我们编写的是Java的源文件,通过编译以后生成的是字节码文件也就是class文件,等到字节码文件被执行时才会被装入到内存中去,这时候就是内存中的字节码
Retention用来标记注解的生命周期,它有三种取值:
RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME,分
别对应Java源文件-->class文件-->内存中的字节码,表示添加了该注解的注解保
留的阶段,比如某个注解加了@Retention(RetentionPolicy.CLASS)注解,则表示
此注解会被保留到class字节码阶段,当调用了添加了@Retention(RetentionPolicy.CLASS)
注解的注解的类的class文件被调入到内存后,添加了@Retention(RetentionPolicy.CLASS)
注解的注解就会被去掉。
注解的默认生命周期维持到class阶段

评分

参与人数 1黑马币 +2 收起 理由
周朋飞 + 2

查看全部评分

回复 使用道具 举报
Java字节码的执行需要经过以下3个步骤:

(1)由类装载器(class loader)负责把类文件(.class文件)加载到Java虚拟机中。在此过程需要检验该类文件是否符合类文件规范。

(2)字节码校验器(bytecode verifier)检查该类文件的代码中是否存在着某些非法操作,例如Applet程序中写本地计算机文件系统的操作。

(3)如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。

注意:

Java虚拟机采用“沙箱”运行模式,即把Java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间以外的内存。如果是Applet程序,还不允许访问客户端机器的文件系统。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马