【发布时间】:2016-12-08 03:33:05
【问题描述】:
假设我有一个具有以下签名的方法。
public void processData(Map<String,String> map)
现在说这个方法遍历一个列表,并在列表中的每个项目上调用下面的方法,传递它拥有的映射。
public void handle(Map<String,String> map)
现在我在 processData 方法中检查了 null。如果它为空,它不会从那里继续,抛出一个自定义异常。但是我也应该在句柄方法中验证地图是否为 null 吗?因为它已经在 processData 方法中得到验证。如果它的空句柄方法不会被调用。我有这个疑问,因为 handle 方法具有公开可见性。我不能将它设置为受保护或默认,因为这两种方法都在不同包的类中。任何建议将不胜感激。
【问题讨论】:
-
这在很大程度上取决于这些方法的性质。这个
handle是做什么的?想象一下,你的朋友让你把这个handle方法分享给他——这个方法应该接受null 吗?如果不是,则抛出异常。如果是,并且此空检查是 您的 应用程序的特殊情况,则否。 -
什么是只有一种类型的地图??你是说列表吗?
-
@Bohemian 抱歉,这是一个错字。不,我不是在征求意见。我要求为此提供具体的方法。应该有一个可靠的正确答案。请删除 onHold 标签。它有赞成票,这表明社区成员确实觉得它很有用。
-
@YeldarKurmangaliyev 感谢您的意见。事实是我确信这不会在任何地方被调用。但它是一种公共方法这一事实让我想知道保持这种方式是否是一种好习惯。而且由于这涉及到好几层,所以在所有层都进行这种空检查并从所有方法中抛出异常感觉很奇怪:/
标签: java oop methods nullpointerexception null