Создание класса 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
}