0

システム内のすべての属性を持つすべてのマーカーをダンプする次の汎用コードがあります。いくつかのブレークポイントを設定すると、LINE_NUMBER と IMarker.CHAR_START の両方の値が明確な値を持っているにもかかわらず、常に null として表示されます。誰でもそれを理解するのを助けることができますか?

private void printAllMarkers() {
        IMarker[] markers = null;
        IWorkspace root = ResourcesPlugin.getWorkspace();
        IProject projects[] = root.getRoot().getProjects();
        for (IProject p : projects) {
            try {
                markers = p.findMarkers(IMarker.MARKER, true, IResource.DEPTH_INFINITE);
                System.out.println("\nAll Markers Are: ");
                for (IMarker m : markers) {
                    System.out.println("-----------Marker of Type: " + m.getType());
                    dumpMarker(m);
                }
            } catch (CoreException e) {
                e.printStackTrace();
            }
        }
    }



    public static void dumpMarker(IMarker m) {
        try {
            for (String attrName : m.getAttributes().keySet()) {
                System.out.println("Attribute:" + attrName + "=" + m.getAttribute(attrName, null));
            }
        } catch (CoreException e) {
            e.printStackTrace();
        }
    }
4

1 に答える 1

0

問題が見つかりました。値が「スーパータイプ」からのものである場合に値を null として表示するのは Eclipse のバグであるため、属性が存在する場合でも getAttribute(attrName, null) は lineStart に対して null を返します。

于 2012-07-31T15:54:46.823 に答える