Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成自定义Java getter和setter_Java_Eclipse_Setter_Getter - Fatal编程技术网

生成自定义Java getter和setter

生成自定义Java getter和setter,java,eclipse,setter,getter,Java,Eclipse,Setter,Getter,我想生成定制的getter和setter,以便在将这些实例保存到SQL数据库时更好地处理变量。我想生成如下内容: public class Test extends SQLEntry { private static final String NAME = "Name"; public String getName() { return get(NAME); } public void setName(String name) {

我想生成定制的getter和setter,以便在将这些实例保存到SQL数据库时更好地处理变量。我想生成如下内容:

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个类,我不会手动编写。没有其他可用的插件

一些插件如何编写特定于您的业务逻辑的代码


您必须为所有类中的setter和getter手动编写代码

我不知道你为什么需要这个,但这里是定制getter和setter的方法。 您可以通过转到“首选项”>“java”>“代码样式”>“代码模板”并选择“代码”,然后编辑Getter body和Setter body并放置以下内容来更新所有生成的Setter和Getter:

Getter主体:返回get(${field})

设置器主体:set(${field},${param})


让我知道这是否有效。我建议你不要做你所描述的,而应该使用。具体来说,
org.springframework.jdbc.core
包中的
BeanPropertyRowMapper
类将执行您想要的操作


请在中阅读更多信息。

试试看。基于模板的代码生成器。您可以使用编写自定义模板,并根据java反射生成文件。这是生成任何文件的最简单方法。您可以通过生成AspectJ或java文件、基于JPA注释的SQL、基于枚举的插入/更新等来创建getter/settest/toString。

最后,我发现最好自己做

如果您喜欢编写代码,那么您将最喜欢此解决方案

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);
}
对于File.txt,我只需复制所有定义的常量并运行生成器

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";

这是可能的,因为据我所知,他想从名称SOMENAME生成getter getSomename(和setSomename),但我也不认为有一个插件可以做到这一点。你是说普通JavaDevelopmentKit的插件还是一个特定的IDE?你想实现什么?如果您试图将数据从DB(例如ResultSet)映射到类,那么您可能只需要使用一个ORM框架,比如Hibernate或MyBatis。如果您一定要自己动手,那么Dozer是一个极好的工具,可以将类和字典映射到彼此。但是,如果您使用的是基于模式的RDM,那么您肯定应该使用ORM,它是有效的。我只需要向下滚动来编辑getter的主体,因为当我单击“编辑模板”时,它最初选择了编辑getters javadoc模板。
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";