- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想找到一个 MethodInitation
的声明节点:
MethodInvocation methodNode = ...;
IMethodBinding b = methodNode.resolveMethodBinding();
IMethodBinding[] declaredMethods = b.getDeclaringClass().getDeclaredMethods();
for (IMethodBinding method : declaredMethods) {
if (astRoot.findDeclaringNode(method).getStructuralProperty(MethodDeclaration.NAME_PROPERTY).equals(name))
//...
}
这在我的情况下不起作用,因为该方法是在另一个编译单元中声明的,并且 astRoot.findDeclaringNode(...)
返回 null
。如何从 IBinding
获取正确的 CompilationUnit
?
最佳答案
我发现SharedASTProvider#getAST
和ASTParser#setSource
可以与 ITypeRoot
一起使用由 IClassFile
两者实现和ICompilationUnit
。获得CompilationUnit
在绑定(bind)中可以使用以下代码片段:
IJavaElement je = b.getJavaElement();
while (je != null && !(je instanceof ITypeRoot)) {
je = je.getParent();
}
if (je != null) {
ITypeRoot = (ITypeRoot)je;
//...
}
了解ITypeRoot
帮助我找到了更好的解决方案,该解决方案不涉及 AST,并且在某些类文件的源代码不可用的情况下似乎可以工作。
for (IMethod method : type.findPrimaryType().getMethods()) {
if (method.getElementName().equals(name)) {
//....
}
}
关于java - 从 IBinding 获取 CompilationUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116641/
当我稍后想将这种数据结构保存在磁盘上时,我永远不知道如何正确地模拟情况。 例如,我目前正在开发一个小型代码生成器。一般的想法是我想在某个地方存储类的限定名称及其相关内容,稍后我想将 .java 文件保
我需要获取源代码中所有变量的IField 或IJavaElement 引用。我使用插件,获取一个 ICompilationUnit,我可以使用以下方法读取所有顶级对象: for( IJavaEleme
我有一个 ICompilationUnit 并尝试找出它属于哪个工作集,或者它是否有一个工作集。我查看了 ICompilationUnit 具有的不同方法,但是我没有找到任何有帮助的方法。有人有想法吗
我想找到一个 MethodInitation 的声明节点: MethodInvocation methodNode = ...; IMethodBinding b = methodNode.resol
大家好 我正在尝试为 eclipse 创建插件以生成一些代码,并且我一直在尝试使用 JDT 操作源代码 举个例子 final ASTParser parser = ASTParser.
我正在编写一个读取java项目的插件,如果程序中存在任何编译器错误,它会使用Eclipse JDT快速修复来提取可能的解决方案来修复编译器错误。用于查找输入编译单元的错误和eclipse解决方案的代码
我在一个编译单元中添加了一堆节点,现在我想查找给定符号对应的语法节点: var compilation = Compilation.Create("HelloWorld") .AddSynta
我不从事 Eclipse 插件项目;但是,我使用了一个生成 org.eclipse.jdt.core.dom.CompilationUnit 实例的外部库。有没有办法从中生成 Java 字节码? 一些
如何将 .java 文件加载到 CompilationUnit 中?例如,假设我当前的项目中有一个 A.java 文件。我想将它加载到 CompilationUnit 中,然后将它传递给 ASTPar
我的问题类似于Eclipse create CompilationUnit from .java file但是我没有文件,我想为具有给定内容的 CompilationUnit 创建一个句柄,而不实际创
我正在尝试向 org.eclipse.jdt.core.dom.CompilationUnit 添加方法或变量声明,但我不知道如何实现。 如果我使用 CompilationUnit.types().a
我正在使用 Jasper Reports 并在我的类路径中使用以下库 jasperreports-4.5.1.jar common-digester3-3.2.jar common-digester2
我是一名优秀的程序员,十分优秀!