Eclipse rcp 如何用ICompilationUnit判断抽象类

Eclipse rcp 如何用ICompilationUnit判断抽象类,eclipse-rcp,eclipse-jdt,Eclipse Rcp,Eclipse Jdt,我正在进行eclipse插件开发,所以我找到了api文档并用谷歌搜索它们,它只包含这样的方法isClass()isInterface()和ICompilationUnit,但我想深入研究抽象类,比如 public boolean isAbstract(ICompilationUnit icu) { //TODO } 有人能帮我吗?首先,您需要一个org.eclipse.jdt.core.IType的实例,因为一个ICompilationUnit可以包含多种类型ICompilationUn

我正在进行eclipse插件开发,所以我找到了api文档并用谷歌搜索它们,它只包含这样的方法isClass()isInterface()和ICompilationUnit,但我想深入研究抽象类,比如

public boolean isAbstract(ICompilationUnit icu) {
   //TODO
}

有人能帮我吗?

首先,您需要一个
org.eclipse.jdt.core.IType的实例,因为一个
ICompilationUnit
可以包含多种类型
ICompilationUnit.getTypes()
将为您提供此单元中所有类型的列表
ICompilationUnit.findPrimaryType()
将为您获取此单元的主类型

您的日常工作应该如下所示:

public boolean isAbstract(ICompilationUnit icu) throws JavaModelException {
    final IType type = icu.findPrimaryType();
    return (type != null) 
        ? Flags.isAbstract(type.getFlags()) 
        : false;
}

其中
Flags
org.eclipse.jdt.core.Flags

谢谢你,max,根据你的说明解决了,但是我也想问你在哪里可以找到代码片段或相关教程,你能提供链接吗?实际上,关于这个主题的好教程不多。我当前的项目涉及JDT,所以我设法发现了一些技巧。在大多数情况下,您应该仔细分析JDT类及其包的sorce代码。至于
Flags.isastract()
Flags
类在
ICompilationUnit.getFlags()
javadoc中提到。这个技巧也可以在eclipse论坛上找到。这是一个基本但有用的教程。它还包含一些链接。