很简单啊.但是首先,你给出它的成员变量以及相关的类型, 再自动生成setXXX(...)和getXXX().或者isXXX(). 比如有一个 private String name; 那你就可以生成: public void setName(String name){ this.name=name; } public String getName(){ return name; }如果是布尔值就有点不同了. private boolean exist; public void setExist(boolean exist){ this.exist = exist; } public void isExist(){ return exist; } 这个你应该可以做得到吧
public class SetterGetterCreater { public static void main(String[] args) { SetterGetterCreater app = new SetterGetterCreater(); app.createSGtter(Test.class); } public void createSGtter(Class pclass){ Field[] fields = pclass.getDeclaredFields(); for(int i=0;i<fields.length;i++){ String name = fields[i].getName(); String type = fields[i].getType().getName(); System.out.println("Name:"+name); // name System.out.println("Type:"+type); // java.lang.String // user name and type to create setter and getter } } }class Test{ private String name = null; private int age = 0; }
再自动生成setXXX(...)和getXXX().或者isXXX().
比如有一个
private String name;
那你就可以生成:
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}如果是布尔值就有点不同了.
private boolean exist;
public void setExist(boolean exist){
this.exist = exist;
}
public void isExist(){
return exist;
} 这个你应该可以做得到吧
SetterGetterCreater app = new SetterGetterCreater();
app.createSGtter(Test.class);
}
public void createSGtter(Class pclass){
Field[] fields = pclass.getDeclaredFields();
for(int i=0;i<fields.length;i++){
String name = fields[i].getName();
String type = fields[i].getType().getName();
System.out.println("Name:"+name); // name
System.out.println("Type:"+type); // java.lang.String
// user name and type to create setter and getter
}
}
}class Test{
private String name = null;
private int age = 0;
}
第一,你无法保证lz的需求是分析.class文件而不是.java文件,
其次,也是最主要的一个漏洞,遍历getDeclaredFields需要判断,过滤掉final(也许还有static)的字段(利用Modifier)
的确是要过滤掉Final修饰符(static就不用了)