簡體   English   中英

生成自定義Java Getter和Setter

[英]Generate custom Java Getters and Setters

我想生成自定義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個課程,我不會手動編寫。

我不知道為什么你需要這個,但這里是自定義Getters和Setter的方法。 您可以通過轉到首選項> java>代碼樣式>代碼模板並選擇代碼然后編輯Getter body和Setter body來更新所有生成的setter和getter並將其放入:

Getter body: return get($ {field});

Setter body: set($ {field},$ {param});

如果有效,請告訴我

我建議您不要使用您描述的內容,而應使用Spring Data 具體來說, org.springframework.jdbc.core包中的BeanPropertyRowMapper類將執行您想要的操作。

閱讀Spring API文檔中的更多內容

沒有其他插件可用!

一些插件如何編寫特定於您的業務邏輯的代碼!

你必須手動為所有類中的setter和getter編寫代碼!

嘗試寫一次 基於模板的代碼生成器 您使用Groovy編寫自定義模板,並根據Java反射生成文件。 這是生成任何文件的最簡單方法。 您可以通過生成AspectJ或java文件,基於JPA注釋的SQL,基於枚舉的插入/更新等來生成getters / 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);
}

運輸:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM