簡體   English   中英

如何正確地在Eclipse編輯器中獲取當前打開的類?

[英]How to get currently opened class in eclipse editor correctly?

我有以下代碼,它實際上運行良好:

IJavaElement je = null;
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
if (part instanceof ContentOutline)
    part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
    if (part instanceof IViewPartInputProvider)
    {
        Object elem = ((IViewPartInputProvider)part).getViewPartInput();
        if (elem instanceof IJavaElement)
            je = (IJavaElement)elem;
    }

但是我得到一個警告:

Discouraged access: The type IViewPartInputProvider is not accessible due to restriction on required library C:\\eclipse\\plugins\\org.eclipse.jdt.ui_3.9.1.v20130820-1427.jar

由於訪問內部API,這似乎是一種骯臟的方式。 有一個更好的方法嗎?

更新

我發現此代碼也可以正常工作,但不會產生任何警告:

IJavaElement je = null;
IWorkbenchPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
if (part instanceof ContentOutline)
    part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
je = JavaUI.getEditorInputJavaElement(((IEditorPart)part).getEditorInput());

由於我省略了一些檢查,因此我擔心如果使用我的插件的人具有不同的eclipse配置,此代碼可能會導致運行時錯誤。 有什么改進建議嗎?

getActivePart()getActiveEditor()可能返回空值,所以可能getActiveWorkbenchWindow()getActivePage()但這些都不太可能)。

您必須測試part以查看它是否是IEditorPartgetActivePart()返回的IWorkbenchPart可能是IViewPart

JavaUI.getEditorInputJavaElement()僅在其中一個Java編輯器為活動編輯器時才有效。 對於可能處於活動狀態的許多其他類型的編輯器,它將返回null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM