(
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”,描述为“系统安全设置、安全管理”,标签为“HFM系统安全文档”。文件内容包含了关于Hyperion Release 9.3.1 版本的共享服务安全管理系统手册的相关知识...
知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。...
颜色假设的多假设方法Daniel Hernandez-Juarez,Sarah Parisot,Benjamin Busam,Ales Leonardis,Gregory Slabaugh和Steven McDonagh 2020年CVPR / / /// 当代方法将色彩恒定性问题归结为学习相机特定的光源映射。...
Setup Specialist 2002 是一个功能强大.且灵活易用的安装程序制作工具。它使用可视化开发环境来制作安装工程文件,采用拖放方式添加文件,所有的设置都一目了然。能制作 32 位和 16 位的安装程序,具有安装、卸载、...
hyp_parse_everything 解析来自播放器端点的所有Hypixel API统计信息。 此项目需要使用API密钥! 这是通过在同一目录中有一个名为API_KEY.json的文件来完成的。 该文件的内容应遵循以下格式: { "API_KEY...
双曲知识图嵌入 该代码是[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" 暗示这是一个与虚拟化技术相关的压缩文件,可能是某个项目的源代码或更新版本。描述中的 "base address for cpu context for Linux v2.13.6" 提到了CPU上下文的基础地址,这在操作系统内核,特别...
【HYP-50M-SR.zip】是一个包含地理信息系统(GIS)数据的压缩包,其核心文件为"TIF"格式。TIF,全称Tagged Image File Format,是一种广泛用于图像存储,尤其是地理空间数据的高保真图像格式。在GIS领域,TIF常被...
【标题】"hyp.rar_.skin_产品展示" 暗示了这是一个与皮肤设计和产品展示相关的项目,可能是一个基于Web的应用程序,其中包含了特定的皮肤界面和展示产品的功能。这个压缩包很可能是用于分享或分发这个项目的源代码、...
NSSet *uniqueWords = [string hyp_uniqueWords ]; 会产生 uniqueWords: {( "first_name", "last_name" )} 提取所有单词将如下所示: NSString *string = @" first_name last_name last_name " ; NSArray *...
- ( void )hyp_addViewController:(UIViewController *)controller;- ( void )hyp_addViewController:(UIViewController *)controller inFrame:( CGRect )frame;- ( void )hyp_removeViewController:...
HyP3 GAMMA HyP3插件,用于使用GAMMA进行SAR处理开发人员设定建议使用Ubuntu 18.0.4以获得GAMMA支持。 安装GAMMA 安装 安装hyp3_gamma git clone git@github....
【标题】:“一个好用的抓图软件 hyp” 在IT领域,高效的工作流程往往离不开优秀的辅助工具。"hyp"是一款专为用户提供截图功能的软件,它以清晰度高、操作简便而受到用户的青睐,尤其适合从ArcGIS软件中抓取地图...
HyP3 SDK 围绕HyP3 API的python包装器 >> > from hyp3_sdk import HyP3 >> > hyp3 = HyP3 ( username = 'MyUsername' , password = 'MyPassword' ) >> > granule = 'S1A_IW_SLC__1SSV_20150621T120220_20150621T...
`asf_hyp3`是一个在PyPI上发布的Python库,版本号为0.9.3,可以从PyPI官网下载。`asf_hyp3`库主要服务于处理高光谱图像数据,特别是那些由美国地球科学研究所(ASF)提供的数据。 这个库的名称`asf_hyp3`表明它与`...
资源分类:Python库 所属语言:Python 资源全名:hyp3_sdk-0.3.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
在IT领域,"hyp-init.rar_Dance Dance Dance" 这个标题可能是在引用一个与虚拟化技术相关的项目或教程,其中“hyp-init”通常是指一个初始化脚本或程序,用于设置和启动虚拟环境。"Dance Dance Dance"部分可能是项目...
2. `gpsa_hyp_objective.m` - 高斯过程的超参数目标函数,可能用于优化模型的超参数,以最大化模型的预测性能。 3. `gpsa_f_objective.m` - 可能是定义模型的损失函数或者目标函数,用于评估模型的预测效果。 4. `...
itext-hyph.jar jasper更多jar包上传
hyp, 在 python 中,部分 JSON API实现 python 中的json api响应。Hyp是实现的库,必须对 json api的响应规范中的某些部分进行处理。 这意味着你可以使用Hyp将模型序列化为包含链接和链接的复合文档的响应。 它与你...