生成自定义的Java Getters和Setter
我想生成自定义getter和setter,所以我可以更好地处理变量,当我将这些实例保存到SQL数据库。我想产生类似:生成自定义的Java Getters和Setter
public class Test extends SQLEntry {
private static final String NAME = "Name";
public String getName() {
return get(NAME);
}
public void setName(String name) {
set(NAME, name);
}
}
但我可以在Eclipse中看到只生成以下代码:
public class Test {
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
有一些插件,能够做到这一点?或者我错过了什么? 我有20个类,我不会手动写这个。
在我发现它,这是最好的做你自己到底...
如果你喜欢写代码比你最喜欢这种解决方案。
public class CodeGenerator {
private final static String ENCODING = "UTF-8";
private final static String FILE_NAME = "File.txt";
public static void main(String[] args) {
try {
ArrayList<Carriage> names = getNames();
for (Carriage c : names) {
createSetter(c.name, c.capitalName);
createGetter(c.name, c.capitalName);
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
private static ArrayList<Carriage> getNames() throws FileNotFoundException {
File file = new File("/");
InputStream is = CodeGenerator.class.getResourceAsStream(FILE_NAME);
Scanner s = new java.util.Scanner(is, ENCODING).useDelimiter("\\A");
String content = s.next();
String[] lines = content.split(System.getProperty("line.separator"));
ArrayList<Carriage> ret = new ArrayList<Carriage>();
for (String line : lines) {
line = line.replaceAll("\\r", "");
int firstCapitalIndex = line.indexOf("String") + 7;
int secondCapitalIndex = line.indexOf(" ", firstCapitalIndex);
int firstIndex = line.indexOf("\"") + 1;
int secondIndex = line.indexOf("\"", firstIndex + 1);
Carriage c = new Carriage();
c.name = line.substring(firstIndex, secondIndex);
c.capitalName = line.substring(firstCapitalIndex, secondCapitalIndex);
ret.add(c);
}
return ret;
}
public static void createSetter(String name, String capitalName) {
String str = "public void set" + name + "(String val) {\n"
+ "\tset(" + capitalName + ", val);\n"
+ "}\n";
System.out.println(str);
}
public static void createGetter(String name, String capitalName) {
String str = "public String get" + name + "() {\n"
+ "\treturn (String) get(" + capitalName + ");\n"
+ "}\n";
System.out.println(str);
}
马车:
package codegenerator;
public class Carriage {
public String name;
public String capitalName;
}
并以FILE.TXT我只是coppy所有定义的常量和运行发电机...
public static final String NAME = "Name";
public static final String PHONE = "Phone";
public static final String EMAIL = "Email";
public static final String ADDRESS_1 = "Address1";
public static final String ADDRESS_2 = "Address2";
public static final String ADDRESS_3 = "Address3";
public static final String ICO = "Ico";
public static final String DIC = "Dic";
public static final String ADMIN_LOGIN = "AdminLogin";
public static final String ADMIN_PASSWORD = "AdminPassword";
public static final String LANGUAGE = "Language";
public static final String CODE = "CODE";
public static final String MONTHLY_PAYMENT = "MonthlyPayment";
没有其他插件可用!
某些插件如何编写特定于您的业务逻辑的代码!
你必须为所有类中的setter和getters手动编写代码!
那么这是可能的,因为据我所知,他想从名字SOMENAME生成一个getter getSomename(和setSomename),但我也不认为有一个插件可以这样做.. – 2013-04-22 11:17:55
我不知道你为什么需要这个,但这里是自定义Getters和Setters的方法。 您可以将首选项>的Java>代码样式>代码模板和选择代码,然后编辑吸气身体和Setter体更新所有生成的getter和setter方法,并把这个:
消气体:得到的回报($ {场});
Setter body: set($ {field},$ {param});
让我知道是否可行
它的工作原理。我只需要向下滚动编辑getter的正文,因为当我点击“编辑模板”时,它最初选择了编辑getters javadoc模板。 – Lukas 2013-04-23 10:09:15
我建议,而不是做你的描述,你应该使用Spring Data。具体来说,org.springframework.jdbc.core
包中的BeanPropertyRowMapper
类将执行您想要的操作。
尝试write-it-once。基于模板的代码生成器您使用Groovy编写自定义模板,并根据java反射生成文件。这是生成任何文件的最简单方法。您可以通过生成AspectJ或java文件,基于JPA批注的SQL,基于枚举的插入/更新等来制作getters/settest/toString。
你谈谈平原JavaDevelopmentKit插件或关于特定的IDE? – reporter 2013-04-22 11:22:18
你想完成什么?如果你试图将数据从数据库(例如一个ResultSet)映射到一个类,那么你应该使用一个像Hibernate或MyBatis这样的ORM框架。如果你绝对不得不推出自己的产品,推土机是一个很好的工具,可以将课堂和词典映射到彼此。但是,如果您使用的是基于Schema的RDMS,则应该使用ORM。 – 2013-04-22 11:22:20