以下是我的问题的说明.我目前不知道处理NullPointerException的方法.
public class Util
{
private Map<Integer, String> myMap;
public Util(Map<Integer, String> myMap)
{
this.myMap = myMap;
}
public String getVal(Integer region)
{
return myMap.get(region);
}
}
public class UtilTest {
@Test
public void testNull() throws Exception{
Map<Integer, String> myMap = null;
Util util = new Util(myMap);
util.getValue(1);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将按预期给出NullPointerException.我关心的是我应该在构造函数或函数本身中处理它
在构造函数中如下
public Util(Map<Integer, String> myMap)
{
if(myMap != null)
this.myMap = myMap;
else
this.myMap = new Map<>();
}
Run Code Online (Sandbox Code Playgroud)
在功能上,它将类似于
public String getVal(Integer region)
{
if(myMap != null)
return myMap.get(region);
else
return "";
}
Run Code Online (Sandbox Code Playgroud)
哪种方法更好,为什么我应该采用另一种?
它应该在Util类中,因为外部函数应该不了解Util类创建内部的内容.它可以发送任何无效/有效值.构造函数应确保正在妥善处理所有无效/有效值.
对此的另一个看法是 - 如果有n个地方创建了Util,那么你必须在所有那些n个地方写下if-else.最好只在构造函数中使用它.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |