我有一个要求,就是扫描一个java(POJO)文件的目录,浏览它们中的每一个,找出那些POJO中定义的相应变量,并检查它是否具有正确的getter和setter名称.对于Eg: – 如果empName是变量名,那么它应该具有getter作为getEmpName()而不是getempName().
这是因为我们长时间构建的J2EE应用程序由于使用了无效的getter和setter而开始失败,这是前端技术所无法识别的.
我已经完成了一个可以确定的基本程序.我的确切问题就像在什么基础上我可以识别一行中的变量.在我的逻辑中,我写了假设包含private关键字的行中的第三个单词将是变量名.只是想知道这种方法是否正确,还是我需要尝试不同的东西,因为看起来要求非常通用.
解决方法:
试图自己扫描源文件将是痛苦的,并涉及许多边缘情况等.
例如,变量的限定符可以是任何顺序,可以有多个.数组括号可以在变量名之前或之后,变量可以被初始化,也可以不被初始化等.有些可以被注释掉或者在内部类中.
您最好的方法是使用反射并使用它来扫描对象.
反射是允许运行Java代码以了解自身的原因.您可以编写一个小程序并添加代码以作为该程序的库进行扫描.然后程序可以扫描那些Jars中的类,并且每个使用反射来查询其中的方法和变量列表.
http://docs.oracle.com/javase/tutorial/reflect/