1

我想在我的项目中找到所有默认范围的,也就是包范围的类成员。(其他范围没问题,因为我可以搜索关键字public/protected/private,但是在这种情况下没有关键字可以搜索。)

是否有 eclipse 插件或任何可以进行这种搜索的东西?

public class Foo {
    private int a;   // these are easy
    protected int b; // to find,
    public int c;    // thanks to keywords

    int d; // but ones like this?
}
4

2 回答 2

1

你可能想看看 javap:

http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javap.html

它主要用于反汇编类,但它还允许您包含/排除不同范围的类成员(例如,私有与公共)

于 2012-06-05T22:47:31.273 回答
0

由于 javap 似乎不是一个合适的解决方案,而且我不知道任何合适的插件,您可能必须自己编写。

Feed it a list of classes.
for each class
    Use Class.forName(className) to get the class object
    use getDeclared{Classes,Fields,Methods,Constructors} to get the members.
    for each member
        Use java.lang.reflect.Modifiers.is{Public,Private,Protected}(member.getModifiers())
        It is default if all three are false
        If default report that member
        You decide whether and how to recurse into inner classes.

我猜该解决方案不适用于嵌套在方法中的类。(javap、javadoc 也不会解决嵌套在方法中的类。)如果您可以断言您的代码没有嵌套在方法中的类,这将使事情变得更加简单。

于 2012-06-06T02:28:07.657 回答