簡體   English   中英

用於getter和setter的Eclipse模板變量

[英]Eclipse template variable for getter and setter

我有一個小問題。 我正在嘗試為Eclipse中的變量創建用於吸氣劑的模板。 我要在我的getter方法中執行的操作是檢查變量是否為null。 如果為null,我想為其分配一個值。 但是問題是我需要將方法的返回值轉換為getter返回類型。 我無法處理。 這是我想要的代碼:

Integer someInt;
Double someDoub;
Long someLong;

public Integer getSomeInt(){
    if(someInt == null) someInt = (Integer) new Generator().evaluate();
    return someInt;
}

public Double getSomeDoub(){
    if(someDoub == null) someDoub = (Double) new Generator().evaluate();
    return someDoub;
}

這是我要生成的代碼。 這是我鍵入的模板:

if( ${field} == null){
    ${field} = ( ${return_type} ) new Generator().evaluate();
}
return ${field};

我一輸入這個。 Eclipse表示return_type是未知的。 請幫忙。

非常感謝您的寶貴時間。

這將完成您的工作:

 if( ${field} == null){
        ${field} =   ${field}.getClass().cast( new Generator().evaluate());
    }
    return ${field};

Eclipse沒有提供在getter / setter代碼模板(即“ Generate Getters and Setters”工具使用的模板)中執行此操作的方法。 僅支持“插入變量”列表中的變量。

${return_type}僅可用於常規模板(即,您可以使用代碼完成熱鍵調用的類型)。

作為一種可能的解決方法,您可以創建一個通用的靜態工廠方法來生成默認對象,而無需進行強制轉換:

public class MyBean {
    Integer someInt;
    Double someDoub;

    public Integer getSomeInt(){
        if (someInt == null) someInt = GeneratorUtil.createAndEvaluate();
        return someInt;
    }

    public Double getSomeDoub(){
        if (someDoub == null) someDoub = GeneratorUtil().createAndEvaluate();
        return someDoub;
    }
}

public class GeneratorUtil {
    @SuppressWarnings("unchecked")
    public static <T> T createAndEvaluate() {
        return (T) new Generator().evaluate();
    }
}

您的Generator類是否使用某種反射類型來確定要生成哪種類型的對象?

暫無
暫無

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

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