Java:instanceof在Eclipse CDT IncludeRefContainer类上返回false

时间:2015-05-12 08:02:08

标签: java eclipse-cdt instanceof

我有以下代码:

private static IProject getProjectFromActivePart(IWorkbenchWindow activeWindow, ISelection selection) {
    if (selection != null && selection instanceof IStructuredSelection) {
        Object element = ((IStructuredSelection) selection).getFirstElement();
        if (element != null) {
            if (element instanceof IncludeRefContainer) {
                IncludeRefContainer cont = (IncludeRefContainer) element;
                return cont.getCProject().getProject();
            }
        }
    }
    return null;
}

声明 if(element instanceof IncludeRefContainer)返回false,即使 element.getClass()返回:

  

class org.eclipse.cdt.internal.ui.cview.IncludeRefContainer

。 尝试将元素对象强制转换为IncludeRefContainer会抛出一个异常:

java.lang.ClassCastException: org.eclipse.cdt.internal.ui.cview.IncludeRefContainer cannot be cast to org.eclipse.cdt.internal.ui.cview.IncludeRefContainer

对我来说听起来很奇怪。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

感谢我的评论,我设法解决了这个问题: 当元素的类对象被另一个类加载器加载为加载尝试执行强制转换的类的类加载器时,就会发生这种情况。 为了解决这个问题,我在Dependencies-> Imported Packages部分中添加了lib,而不是在Runtime-> ClassPath中添加了