Создание класса Util - PullRequest
       15

Создание класса Util

4 голосов
/ 02 января 2012

Я создал класс fomatter для валюты.Я хочу, чтобы это был класс util и мог использоваться другими приложениями.Теперь я просто беру строку, вместо этого я хочу, чтобы она была установлена ​​приложением, импортирующим мой currencyUtil.jar

public class CurrencyUtil{
  public BigDecimal currencyUtil(RenderRequest renderRequest, RenderResponse renderResponse)
        throws IOException, PortletException {
        BigDecimal amount = new BigDecimal("123456789.99");  //Instead I want the amount to be set by the application.      
        ThemeDisplay themeDisplay = 
             (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
        Locale locale = themeDisplay.getLocale();

        NumberFormat canadaFrench = NumberFormat.getCurrencyInstance(Locale.CANADA_FRENCH);
        NumberFormat canadaEnglish = NumberFormat.getCurrencyInstance(Locale.CANADA);
        BigDecimal amount = new BigDecimal("123456789.99");
        DecimalFormatSymbols symbols = ((DecimalFormat) canadaFrench).getDecimalFormatSymbols();
        symbols.setGroupingSeparator('.');
        ((DecimalFormat) canadaFrench).setDecimalFormatSymbols(symbols);

    System.out.println(canadaFrench.format(amount));
        System.out.println(canadaEnglish.format(amount));     
    //Need to have a return type which would return the formats
     return amount;
    }
}

Пусть другое приложение, которое вызывает этот класс утилит, будет

 import com.mypackage.CurrencyUtil;
 ...
 public int handleCurrency(RenderRequest request, RenderResponse response) {
String billAmount = "123456.99";
    CurrencyUtil CU = new currencyUtil();
//Need to call that util class and set this billAmount to BigDecimal amount in util class.
//Then it should return both the formats or the format I call in the application.
   System.out.println(canadaEnglish.format(billAmount);  //something like this
}

Какие изменения я делаю?

Ответы [ 2 ]

1 голос
/ 02 января 2012

Вам необходимо создать объект класса CurrencyUtil.

CurrencyUtil CU = new CurrencyUtil();
//To call a method,
BigDecimal value=CU.currencyUtil(request,response);

Я предлагаю currenyUtil метод должен быть static, и он принимает три параметра.

public class CurrencyUtil
 {
  public static BigDecimal currencyUtil(
                RenderRequest renderRequest, 
                RenderResponse renderResponse,
                String amountStr) throws IOException, PortletException 
    {
       BigDecimal amount = new BigDecimal(amountStr); 
       ...
    }
 }

и вы можете назвать это,

 BigDecimal value=CurrencyUtil.currencyUtil(request,response,billAmount);
0 голосов
/ 26 мая 2017

Согласно «Эффективной Яве» Джошуа Блоха, Пункт 4: принудительное использование неотъемлемой части с помощью частного конструктора:

public final class CurrencyUtil {

    // A private constructor
    private CurrencyUtil() {
        throw new AssertionError();
    }

    //Here goes your methods
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...