Properties 中的两种getProperty返回值,以及返回值与其他String比较

public String getProperty (String name, String defaultValue)

Since: API Level 1

Searches for the property with the specified name. If the property is not found, it looks in the default Properties. If the property is not found in the default Properties, it returns the specified default.

Parameters

name
the name of the property to find.

defaultValue
the default value.

Returns
  • the named property value.

 

public String getProperty (String name)

Since: API Level 1

Searches for the property with the specified name. If the property is not found, the default Properties are checked. If the property is not found in the default Properties, null is returned.

Parameters

name
the name of the property to find.

Returns
  • the named property value, or null if it can't be found.

这是android API上的官方描述。

我觉得第一种好一点。

当然,情况如果是这样的:

 

   1: String unsigned_value = "Unsigned";
   2: boolean haveSigned = true;     
   3: Properties p =new Properties();
   4:  try
   5:   {
   6:     p.load(openFileInput(fileName));
   7:     str_tmp = p.getProperty(date_key,"Unsigned");
   8:     if (str_tmp.equals(unsigned_value)) //此处字符串比较是症结所在。。。
   9:     {
  10:         haveSigned = false;
  11:     }
  12:     
  13:   } catch (FileNotFoundException e)
  14:   {
  15:     e.printStackTrace();
  16:   } catch (IOException e)
  17:   {
  18:     e.printStackTrace();
  19:   }

格式什么的大致这样吧,总之这是在某个方法中的.关键是从properties中取得date_key对应的value值,来判断haveSigned是ture还是false。

如果用第二种,p.getProperty(date_key);

那么如果Properties中没有date_key,就会返回null,这时用str_tmp.equals(unsigned_value)这句不论真假都会报错。。屡试不爽。。

思考一下,是不是说,因为str_tmp是null了,所以是“空”,是没有的东西,所以没法用.equals比较呢?

 

我去试一下。。。

额,好吧,果然把位置换过来就可以了,unsigned_value.equals(str_tmp);

 

算是小儿科吧,不过如果当初就直接用第一种,返回个String 就没问题了。

基础不牢固啊~~~

大家谨慎~

posted @ 2011-09-20 17:04  Reaver21  阅读(4217)  评论(0编辑  收藏  举报