2

Javaを見つけました: メソッドのすべての呼び出し元を検索 – 特定のメソッドを呼び出すすべてのメソッドを取得すると、特定のメソッドのすべての呼び出し元を見つける方法のヒントが得られます。

では、静的フィールドのユーザーを取得する方法は?

たとえば、 に staticzAnotherClassあり、 でアクセスする場合、?ClassAを取得するにはどうすればよいIMethod ClassA#movedですか?

public class AnotherClass {
    public static int z = 20;
    ....
}


public class ClassA {
    public int moved(int x, int y)
    {
        int temp = AnotherClass.z;
    }
4

2 に答える 2

4

この例は org.eclipse.jdt.internal.* クラスに基づいています。JDT SearchEngine API はフル機能であるため、これを行うのにそれほど労力を費やす必要はないと思います。あなたの場合、次のコードで十分です。

    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot root = workspace.getRoot();
    IProject plainProject = root.getProject("some project");
    IJavaProject javaProject = JavaCore.create(plainProject);
    try {
        IType type = javaProject.findType("foo.bar.AnotherClass");
        IField field = type.getField("z");
        //IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
        IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { plainProject });
        SearchPattern searchParttern = SearchPattern.createPattern(field,
                IJavaSearchConstants.REFERENCES);
        SearchRequestor requestor = new SearchRequestor() {
            @Override
            public void acceptSearchMatch(SearchMatch match) {
                System.out.println(match.getElement());
            }
        };
        SearchEngine searchEngine = new SearchEngine();
        searchEngine.search(searchParttern,
                new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope,
                requestor, new NullProgressMonitor());
    } catch (Exception e) {
        // some exception handling you need to do
    }
于 2013-01-24T09:20:21.247 に答える
0

Java 要素の検索 (参照) には、 JDT Core SearchEngine APIを使用する必要があります。

于 2013-01-24T06:10:22.337 に答える