0
   static FreeDutyProductManager()

    {

       string fileName = ConfigurationManager.AppSettings["freeDutyProductFile"];

       if (!File.Exists(fileName))
       {
           throw new FileNotFoundException("File can't not find:" +fileName);
       }

       freeDutyProduct = new Hashtable();
       TextReader reader = new StreamReader(File.OpenRead(fileName));
       string line = string.Empty;

       IList<string> productList = null;
       while ((line = reader.ReadLine()) != null)
       {
           if (line.Trim()== string.Empty)
           {
               continue;
           }
           if (line.Trim().EndsWith(":"))
           {
               productList = new List<string>();
               freeDutyProduct.Add(line.Replace(":", ""),productList);
           }
           else
           {
               productList.Add(line.Trim());
           }
       }
   }

我想将其转换为 JAVA,但 java 警告我有关哈希表空指针访问:变量 productList 在此位置只能为空。

我能做些什么来解决这个问题?

4

1 回答 1

2

productList 以 null 开头,并且仅有时会被分配。

       if (line.Trim().EndsWith(":"))
       {
           productList = new List<string>();
           freeDutyProduct.Add(line.Replace(":", ""),productList);
       }
       else
       {
           productList.Add(line.Trim());
       }

为什么不在你声明变量的地方做新的列表呢?

于 2013-10-13T06:46:29.057 回答