我想在我的项目中找到所有默认范围的,也就是包范围的类成员。 (其他范围没有问题,因为我可以搜索关键字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?
}
答案 0 :(得分:1)
你可能想看看javap:
http://docs.oracle.com/javase/1.5.0/docs/tooldocs/windows/javap.html
它主要用于反汇编类,但它也允许您包含/排除不同范围的类成员(例如私有与公共)
答案 1 :(得分: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解决嵌套在方法中的类。)如果你可以断言你的代码没有嵌套在方法中的类,那么它会使事情变得更简单。