`

HYP_00002_JDT Ext

 
阅读更多
( ADAPTED FROM BAIDU BAIKE:http://baike.baidu.com/view/1665070.htm)
JDT  
JDT(java development tooling)是Eclipse提供的一组API。其功能引用其官方文档上的说法:   
Programmatically manipulate Java resources, such as creating projects, generating Java source code, performing builds, or detecting problems in code. Programmatically launch a Java program from the platform. Provide a new type of VM launcher to support a new family of Java runtimes. Add new functions and extensions to the Java IDE itself.
总之,提供了一系列强大的API供我们操作Java代码。   JDT实际上是将Java代码构建成一个基于DOM结构的抽象语法树AST(Abstract Syntax Tree )。代码中的每个部分都对应一个ASTNode,许多的ASTNode就构成了这个抽象的语法树。Java Class一般对应Compilation Unit node,该节点也是AST树上的顶点。创建一个AST如下:   
java 代码   
ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("".toCharArray()); CompilationUnit unit = (CompilationUnit) parser.createAST(null); unit.recordModifications(); AST ast = unit.getAST();   其中createAST,当parse需要较长时间时,可以采用createAST(new NullProgressMonitor()),否则直接传null即可。   recordModifications()用于记录节点的变动,比如修改、删除等,当需要对AST树进行变动操作时,必须要预先调用这个方法。   
比较重要的是:一个AST树上的所有节点必须都属于该AST。不允许直接将其他AST树上的节点添加该AST树上。否则会抛出java.lang.IllegalArgumentException异常。须使用ASTNode.copySubtree(AST target, ASTNode node)返回一个目标树的深度拷贝,才能进行添加操作。例如: java 代码ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("".toCharArray()); CompilationUnit targetRoot= (CompilationUnit) parser.createAST(null); targetRoot.recordModifications(); parser.setSource("class T{}”".toCharArray()); CompilationUnit srcRoot= (CompilationUnit) parser.createAST(null); //这是非法操作,两者的AST源不一样 targetRoot.types().add(srcRoot.types().get(0)); //这是合法操作 targetRoot.types().add(ASTNode.copySubtree( targetRoot.getAST(), (ASTNode) srcRoot.types().get(0))); //这是合法操作 targetRoot.types().add(targetRoot.getAST().newTypeDeclaration());
分享到:
评论

相关推荐

    hyp_security_guide.pdf

    根据提供的文件信息,文件标题为“hyp_security_guide.pdf”,描述为“系统安全设置、安全管理”,标签为“HFM系统安全文档”。文件内容包含了关于Hyperion Release 9.3.1 版本的共享服务安全管理系统手册的相关知识...

    Python创建Neo4J知识图谱数据库.zip

    知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。...

    multi_hyp_cc:[CVPR2020]颜色假设的多假设方法

    颜色假设的多假设方法Daniel Hernandez-Juarez,Sarah Parisot,Benjamin Busam,Ales Leonardis,Gregory Slabaugh和Steven McDonagh 2020年CVPR / / /// 当代方法将色彩恒定性问题归结为学习相机特定的光源映射。...

    HYP-SetupSpecialist2002_JOY

    Setup Specialist 2002 是一个功能强大.且灵活易用的安装程序制作工具。它使用可视化开发环境来制作安装工程文件,采用拖放方式添加文件,所有的设置都一目了然。能制作 32 位和 16 位的安装程序,具有安装、卸载、...

    hyp_parse_everything:解析来自播放器端点的所有Hypixel API统计信息

    hyp_parse_everything 解析来自播放器端点的所有Hypixel API统计信息。 此项目需要使用API​​密钥! 这是通过在同一目录中有一个名为API_KEY.json的文件来完成的。 该文件的内容应遵循以下格式: { "API_KEY...

    KGEmb:双曲知识图嵌入

    双曲知识图嵌入 该代码是[6]的官方PyTorch实现,以及可以为...virtualenv -p python3.7 hyp_kg_env source hyp_kg_env/bin/activate pip install -r requirements.txt 然后,设置环境变量并激活您的环境: source set

    hyp.rar_V2

    标题 "hyp.rar_V2" 暗示这是一个与虚拟化技术相关的压缩文件,可能是某个项目的源代码或更新版本。描述中的 "base address for cpu context for Linux v2.13.6" 提到了CPU上下文的基础地址,这在操作系统内核,特别...

    HYP-50M-SR.zip

    【HYP-50M-SR.zip】是一个包含地理信息系统(GIS)数据的压缩包,其核心文件为"TIF"格式。TIF,全称Tagged Image File Format,是一种广泛用于图像存储,尤其是地理空间数据的高保真图像格式。在GIS领域,TIF常被...

    hyp.rar_.skin_产品展示

    【标题】"hyp.rar_.skin_产品展示" 暗示了这是一个与皮肤设计和产品展示相关的项目,可能是一个基于Web的应用程序,其中包含了特定的皮肤界面和展示产品的功能。这个压缩包很可能是用于分享或分发这个项目的源代码、...

    NSString-HYPWordExtractor:从字符串中提取所有单词的最简单方法

    NSSet *uniqueWords = [string hyp_uniqueWords ]; 会产生 uniqueWords: {( "first_name", "last_name" )} 提取所有单词将如下所示: NSString *string = @" first_name last_name last_name " ; NSArray *...

    UIViewController-HYPContainer:安全地添加子视图控制器

    - ( void )hyp_addViewController:(UIViewController *)controller;- ( void )hyp_addViewController:(UIViewController *)controller inFrame:( CGRect )frame;- ( void )hyp_removeViewController:...

    hyp3-gamma:HyP3插件,用于使用GAMMA进行辐射地形校正

    HyP3 GAMMA HyP3插件,用于使用GAMMA进行SAR处理开发人员设定建议使用Ubuntu 18.0.4以获得GAMMA支持。 安装GAMMA 安装 安装hyp3_gamma git clone git@github....

    一个好用的抓图软件 hyp

    【标题】:“一个好用的抓图软件 hyp” 在IT领域,高效的工作流程往往离不开优秀的辅助工具。"hyp"是一款专为用户提供截图功能的软件,它以清晰度高、操作简便而受到用户的青睐,尤其适合从ArcGIS软件中抓取地图...

    hyp3-sdk:围绕HyP3 API的python包装器

    HyP3 SDK 围绕HyP3 API的python包装器 >> > from hyp3_sdk import HyP3 >> > hyp3 = HyP3 ( username = 'MyUsername' , password = 'MyPassword' ) >> > granule = 'S1A_IW_SLC__1SSV_20150621T120220_20150621T...

    PyPI 官网下载 | asf_hyp3-0.9.3-py2.py3-none-any.whl

    `asf_hyp3`是一个在PyPI上发布的Python库,版本号为0.9.3,可以从PyPI官网下载。`asf_hyp3`库主要服务于处理高光谱图像数据,特别是那些由美国地球科学研究所(ASF)提供的数据。 这个库的名称`asf_hyp3`表明它与`...

    Python库 | hyp3_sdk-0.3.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:hyp3_sdk-0.3.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    hyp-init.rar_Dance Dance Dance

    在IT领域,"hyp-init.rar_Dance Dance Dance" 这个标题可能是在引用一个与虚拟化技术相关的项目或教程,其中“hyp-init”通常是指一个初始化脚本或程序,用于设置和启动虚拟环境。"Dance Dance Dance"部分可能是项目...

    Matlab实现竞争风险的生存数据高斯过程回归 上传.zip

    2. `gpsa_hyp_objective.m` - 高斯过程的超参数目标函数,可能用于优化模型的超参数,以最大化模型的预测性能。 3. `gpsa_f_objective.m` - 可能是定义模型的损失函数或者目标函数,用于评估模型的预测效果。 4. `...

    itext-hyph.jar

    itext-hyph.jar jasper更多jar包上传

    hyp, 在 python 中,部分 JSON API实现.zip

    hyp, 在 python 中,部分 JSON API实现 python 中的json api响应。Hyp是实现的库,必须对 json api的响应规范中的某些部分进行处理。 这意味着你可以使用Hyp将模型序列化为包含链接和链接的复合文档的响应。 它与你...

Global site tag (gtag.js) - Google Analytics