如何在JDT未解析代码时获取HashMap的ITypeBinding?
可行,具体实现方法如下
要获取Java库类(如HashMap)的ITypeBinding,必须依赖JDT配置好的Java环境上下文(包含JRE类路径),无法脱离上下文凭空解析。以下是具体实现思路和代码示例:
核心实现步骤
- 先构建包含JRE系统库的编译环境,获取JDT的解析上下文
- 利用上下文的类型解析能力,通过类的全限定名获取
ITypeBinding
代码示例
// 1. 初始化JDT项目上下文,需确保已配置JRE系统库 JavaProject javaProject = JavaCore.create(eclipseProject); // eclipseProject为预先配置好的IProject实例 ASTParser parser = ASTParser.newParser(AST.JLS17); // 根据目标Java版本调整 parser.setProject(javaProject); parser.setKind(ASTParser.K_COMPILATION_UNIT); // 2. 用空编译单元触发上下文初始化 parser.setSource("".toCharArray()); CompilationUnit compilationUnit = (CompilationUnit) parser.createAST(null); IBindingResolver resolver = compilationUnit.getBindingResolver(); // 3. 通过全限定类名解析获取ITypeBinding ITypeBinding hashMapBinding = resolver.resolveType("java.util.HashMap");
关键说明
- 不能直接传入
HashMap.class,JDT依赖自身编译环境,必须通过全限定类名查找 - 必须保证
JavaProject已正确配置JRE系统库,否则会无法定位到库类的绑定 - 若不想依赖Eclipse的
IProject,可手动构建类路径,创建临时JavaProject上下文来完成解析
内容的提问来源于stack exchange,提问作者Igor Adamovich
相关产品推荐
相关产品推荐

