猿问

Null Getter,拆分时抛出异常

我有一个数组


String [] array = account.getDetails().split(',');


账户明细有时为空,如何避免异常?


我做了类似的事情,但不喜欢漂亮。


if (account.getDetails() == null) 

{

   account.setDetails("");

}


String[] array = account.getDetails().split(',');

避免抛出NullPointerException,这样可以还是有更好的方法?


慕仙森
浏览 140回答 4
4回答

天涯尽头无女友

如果您正在寻找一种“更漂亮”的方式,那么这是一个适合“?”的地方。运算符(称为三元运算符)String[] array = account.getDetails() == null? new String[]{""} : account.getDetails().split(",");您还可以更改 getter 或 setter/constructor,以便 getDetails() 方法永远不会返回 null(因为它不会或因为它根本没有 null)。public String getDetails() {    return details == null? "" : details;}

芜湖不芜

您可以避免调用split(String)空字符串并执行以下操作:String[] array;if (account.getDetails() == null) {   array = new String[0];} else {   array = account.getDetails().split(",");}请注意,如果输入为 ,您的实现将返回一个带有一个空字符串的数组null,这将返回一个空数组。正如@MarkAdelsberger 所指出的,您不应该直接在对象上更改值,这被称为上帝行为。

FFIVE

if else使用语句进行空检查是可以的。还需要提到的是,在 java8Optional中引入了一个,这有助于避免空检查。使用可选时,它将如下所示:String[] strings = Optional.ofNullable(account.getDetails())     .map(s -> s.split(",")).orElse(new String[0]);

哈士奇WWW

所以这是我认为的好方法,首先你检查细节是否没有null使用?,如果不是null你只是做split并将结果分配给变量array,否则你分配空字符串数组,因为细节是null:String details = account.getDetails();String[] array = details != null ? details.split(",") : new String[0];
随时随地看视频慕课网APP

相关分类

Java
我要回答