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

Я создал класс 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 ответа

Решение

Вам нужно создать объект 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);

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

public final class CurrencyUtil {

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

    //Here goes your methods
}
Другие вопросы по тегам