我有一个静态的util方法,我调用的是一些值为null。
以下是我正在调用的方法签名:
public static void logAndDisplayError(@Nullable Shell parentShell, String dialogTitle, String exceptionMessage, @Nullable Exception e, @Nullable Integer statusCode, boolean is1CD)
以下是对该方法的调用:
EclipseError.logAndDisplayError(getShell(), "Error Occured On Finish", message, null, null, true);
在方法内部,我正在创建一个导致空指针的MessageDialog。
这是MessageDialog的创建:
MessageDialog dialog = new MessageDialog(parentShell,
dialogTitle,
MessageDialog.getImage(Dialog.DLG_IMG_MESSAGE_ERROR),
getErrorMessage(e.getMessage(), e, statusCode),
MessageDialog.ERROR,
new String[]{"1CD Help", "Ok"},
1);
在MessageDialog中的此调用中出现空指针:
getErrorMessage(e.getMessage(), e, statusCode)
所以我们知道e和statusCode为null。但是我在getErrorMessage方法中定义了Nullable ...
private static String getErrorMessage(String exceptionMessage, @Nullable Exception e, @Nullable Integer statusCode)
为什么抛出空指针?
此外,这是我正在使用的@Nullable:
org.eclipse.jdt.annotation.Nullable
答案 0 :(得分:0)
如您所见,它是一个日食注释,它就像对开发人员的一点点评论。方法总是允许你给它一个空参数。
由于您为方法指定了一个空参数,因此抛出 NullPointerException
是很自然的我建议您使用make bean并使用hibernate验证器来实现此目的。
Hibernate validator是bean验证的实现。
RG