我主要關心的是線程安全的實現以下場景,我想看看是否比普通對象實例更好地使用靜態方法,反之亦然。 我讀了一些文章,但我更困惑。哪種方法更好?靜態方法內的ArrayList是困惑
- Web應用程序將從每個http表單提交中接收字符串文本。每個表單提交都是包含由用戶創建的自由文本的項目ID的文本。
- 字符串文本將被解析。在解析時,將創建本地ArrayList,並將此本地ArrayList用作項目的臨時佔位符。 由於這個ArrayList,我不確定靜態方法是否合適。
- 使用此ArrayList,文本將被重新格式化。 ArrayList將循環並用一些文本進行格式化。
通常我會創建簡單的靜態方法以String作爲輸入並返回格式化文本。但由於ArrayList被用作局部變量,我不確定靜態方法是否正確選擇,或者我應該爲它創建普通的對象實例。由於ArrayList是局部變量,但是將它設計爲成員變量並將類實例化爲輸入文本作爲成員變量而不是靜態方法的對象?
下面的類是我做的,但不知道我是否應該重寫爲非靜態的。
public class A {
private static List<Item> parseFreeText(String message){
List<Item> itemList = new ArrayList<Item>();
/*
read message line by line and parse it and build ArrayList and return
itemList.add(item);
*/
return itemList;
}
public static String formattedTextOfItems(String message){
List<Item> itemList = parseFreeText(message);
StringBuilder sb = new StringBuilder();
for(Item item: itemList){
/* format string with item information */
sb.append("ITEM ID: " + item.getId());
}
return sb.toString();
}
,並在servlet的層將用作以下
String order = A.formattedTextOfItems(req.getParameter("orderText")
取決於它的使用方式;這些都不像所介紹的那樣是遠程線程安全的。 –
將使用此實用程序類,並在servlet內調用一個方法。主要目的是解析從Web表單提交的輸入文本。 –