我有未初始化的数组
$metaquery = array(
array(
'key' => 'investmentprice',
'value' => $_price,
'compare' => 'BETWEEN'
)
);
$query->set( 'meta_query', $metaquery );
并尝试通过使用static String arr[];
Optional
很遗憾,我有Optional.ofNullable(arr[0]).ifPresent(System.out::println);
如何正确使用java.lang.NullPointerExeption
?
仅用于教育目的。我知道我可以按标准检查它。我只想学习使用Optionals。
我的目标是编写一个单行代码,如果它不为null且整个数组都已初始化,则将打印该数组的第一个元素。
答案 0 :(得分:2)
您将需要以下内容:
Optional.ofNullable(arr)
.flatMap(x -> Arrays.stream(x).findFirst())
.ifPresent(System.out::println);
答案 1 :(得分:1)
另一个非常简单的选择:
Optional.ofNullable(arr)
.filter(a -> a.length > 0)
.map(a -> a[0])
.ifPresent(System.out::println);
过滤器确保数组不为空。因此,映射到数组的第一个元素是安全的。
它甚至看起来类似于标准方式:
if (arr != null && arr.length > 0) {
System.out.println(arr[0]);
}
答案 2 :(得分:0)
Optional.ofNullable(arr_v_[0]).ifPresent(System.out::println);
由于NPE的失败,其中_v_
为-arr
为空,因此NPE
if(arr!=null)
应该足够您了。
答案 3 :(得分:0)
您不能遍历未初始化的Array,因为它是NULL对象。有很多好的答案已经解决了这个问题,但是我认为最好理解一下,如果您首先初始化数组,它将可以工作。
String arr[] = new String[5];
Optional.ofNullable(arr[0]).ifPresent(System.out::println);
会工作。因为您有一个带有null的String的arr。
String arr[] ;
Optional.ofNullable(arr[0]).ifPresent(System.out::println);
将无法使用,因为您有一个Null对象。您需要采取一种变通方法,首先检查数组是否为空。