Java8 - OptionalInt类示例

744 阅读2分钟

java.util.OptionalInt

OptionalInt是一个容器类,它包含空或不空的int值。
OptionalInt是Optional类的一个原始int版本,而Optional是Integer对象的一个Optional类。

isPresent()方法返回true。getAsInt()方法返回整数值。

创建空的OptionalInt实例

empty()方法创建OptionalInt实例。isPresent()方法返回false,false意味着没有值。

OptionalInt emptyOptionalInt = OptionalInt.empty(); 

创建非空的OptionalInt实例。

OptionalInt.of(int)方法创建OptionalInt实例,其中有int值。

OptionalInt valueOptionalInt = OptionalInt.of(5);

ifPresentOrElse()方法示例

ifPresentOrElse方法检查,如果值存在,则对该值应用消费者,否则为空值

OptionalLong optionalLongvalue = OptionalLong.of(15);   
  optionalIntvalue.ifPresentOrElse((value) -> {  
  System.out.println("data exists: " + value);  
  }, () -> {  
  System.out.println("Not exists");   
  });

可选Int的例子

这是一个使用OptionalInt的Lambda表达式和实用方法的例子,如:empty(),of(int),ifPresentOrElse()

OptionalInt emptyOptionalInt = OptionalInt.empty();   
OptionalInt optionalIntvalue = OptionalInt.of(5);   
optionalIntvalue.ifPresentOrElse((value) -> {  
System.out.println("data exists: " + value);  
}, () -> {  
System.out.println("Not exists");   
});  
emptyOptionalInt.ifPresentOrElse((value) -> {  
System.out.println("data exists: " + value);  
}, () -> {  
System.out.println("Not exists");   
});  

data exists: 5  
Not exists  

在java8中把OptionalInt转换为Int

OptionInt.getAsInt()方法返回原始的int值

int intValue =0;  
OptionalInt optionalInt = OptionalInt.of(3);  
if(optionalInt.isPresent()) {  
intValue=optionalInt.getAsInt();  
}  
System.out.println(intValue); // output 3  

在java8中把Int转换为OptionalInt

OptionalInt.of()方法用于创建具有非空int值的OptionalInt。
语法

public static OptionalInt of(int value) 

这个方法接收int Value作为输入并返回OptionalInt对象。

int intValue = 17;  
OptionalInt optionInt = OptionalInt.of(intValue);  
System.out.println(optionInt.isPresent()); // returns true 

在java8中OptionalInt和Optional的区别?

Optional.get() 返回Integer对象
OptionalInt.getAsInt() 方法返回int primitivevalue
IntStream和OptionalInt对象的int值可能会导致nullpointerexception
Optional和Stream为int值添加了额外的包装以避免null异常。

方法

OptionalInt提供了许多处理可用和不可用的工具。

方法说明:-说明

空():

创建空的OptionalInt实例

getAsInt():

返回int值,如果值存在于OptionalInt中,否则出现NoSuchElementException。

ifPresent(IntegerConsumer consumer):

执行IntegerConsumer,如果值存在于OptionalInt中,否则不做任何操作

isPresent():

如果值存在于OptionalInt中,则返回true,否则返回false

of(Integer integer):

创建非空值的OptionalInt,如果传入空值,则抛出NullPointerException,OptionalInt对象将不会被初始化。

orElse(int other):

如果在OptionalInt中没有显示值,返回默认值。

orElseGet(IntegerSupplier other):

如果值在OptionalInt中出现,则返回值,否则供应商被调用,结果将被返回。

orElseThrow(Supplier exceptionSupplier):

如果值以OptionalInt的形式出现,则返回值,否则供应商被调用并抛出一个错误。