个性化阅读
专注于IT技术分析

Java可选类

Java在jdk8中引入了新的Optional类。它是一个公共的最终类, 用于处理Java应用程序中的NullPointerException。你必须导入java.util包才能使用此类。它提供了用于检查特定变量的值是否存在的方法。

Java可选的类方法

方法 描述
公共静态<T>可选<T> empty() 它返回一个空的Optional对象。此可选的值不存在。
(T值)的公共静态<T>可选<T> 它返回带有指定的当前非空值的Optional。
Nullable(T值)的公共静态<T>可选<T> 如果非null, 则返回描述指定值的Optional, 否则返回空的Optional。
public T get() 如果此Optional中存在一个值, 则返回该值, 否则抛出NoSuchElementException。
public boolean isPresent() 如果存在值, 则返回true, 否则返回false。
公共无效ifPresent(Consumer <?super T>消费者) 如果存在值, 请使用该值调用指定的使用者, 否则不执行任何操作。
public Optional <T>过滤器(谓词<?super T>谓词) 如果存在值, 并且该值与给定谓词匹配, 则返回描述该值的Optional, 否则返回一个空的Optional。
public <U>可选<U>映射(功能<?超级T , ?扩展了U>映射器) 如果存在值, 则将提供的映射函数应用于该值, 如果结果为非null, 则返回描述结果的Optional。否则, 返回一个空的Optional。
public <U>可选<U> flatMap(函数<?super T, 可选<U>映射器) 如果存在一个值, 则对它应用提供的带有可选参数的映射函数, 返回该结果, 否则返回一个空的Optional。
public T orElse(T other) 如果存在, 则返回该值, 否则返回other。
公共T orElseGet(供应商<?扩展T>其他) 如果存在该值, 则返回该值;否则调用其他值, 并返回该调用的结果。
公共<X扩展Throwable> T orElseThrow(Supplier <?扩展X> exceptionSupplier)抛出X扩展Throwable 它返回包含的值(如果存在), 否则抛出异常, 由提供的供应商创建。
public boolean equals(Object obj) 指示其他某个对象是否“等于”此Optional。如果满足以下条件, 则认为另一个对象相等:它也是可选的;并且两个实例都不存在值;或者当前值通过equals()彼此“相等”。
public int hashCode() 它返回当前值的哈希码值(如果有), 如果没有值, 则返回0(零)。
public String toString() 它返回此Optional的非空字符串表示形式, 适用于调试。确切的表示格式未指定, 在实现和版本之间可能会有所不同。

示例:不使用Optional的Java程序

在下面的示例中, 我们没有使用Optional类。该程序异常终止并抛出nullPointerException。

public class OptionalExample {
	public static void main(String[] args) {
		String[] str = new String[10];
		String lowercaseString = str[5].toLowerCase();
		System.out.print(lowercaseString);
	}
}

输出:

Exception in thread "main" java.lang.NullPointerException
	at lambdaExample.OptionalExample.main(OptionalExample.java:6)

为了避免异常终止, 我们使用Optional类。在下面的示例中, 我们使用Optional。因此, 我们的程序可以执行而不会崩溃。


Java可选示例:如果不存在Value

import java.util.Optional;
public class OptionalExample {
	public static void main(String[] args) {
		String[] str = new String[10];
		Optional<String> checkNull = Optional.ofNullable(str[5]);
	    if(checkNull.isPresent()){	// check for value is present or not
	    	String lowercaseString = str[5].toLowerCase();
			System.out.print(lowercaseString);
	    }else
	    	System.out.println("string value is not present");
	}
}

输出:

string value is not present

Java可选示例:如果存在值

import java.util.Optional;
public class OptionalExample {
	public static void main(String[] args) {
		String[] str = new String[10];		
		str[5] = "JAVA OPTIONAL CLASS EXAMPLE";// Setting value for 5th index
		Optional<String> checkNull = Optional.ofNullable(str[5]);
	    if(checkNull.isPresent()){	// It Checks, value is present or not
	    	String lowercaseString = str[5].toLowerCase();
			System.out.print(lowercaseString);
	    }else
	    	System.out.println("String value is not present");
	}
}

输出:

java optional class example

另一个Java可选示例

import java.util.Optional;
public class OptionalExample {
	public static void main(String[] args) {
		String[] str = new String[10];		
		str[5] = "JAVA OPTIONAL CLASS EXAMPLE";  // Setting value for 5th index
		Optional<String> checkNull = Optional.ofNullable(str[5]);
		checkNull.ifPresent(System.out::println);	// printing value by using method reference
		System.out.println(checkNull.get());	// printing value by using get method
		System.out.println(str[5].toLowerCase());	
	}
}

输出:

JAVA OPTIONAL CLASS EXAMPLE
JAVA OPTIONAL CLASS EXAMPLE
java optional class example

Java可选方法示例

import java.util.Optional;
public class OptionalExample {
	public static void main(String[] args) {
		String[] str = new String[10];		
		str[5] = "JAVA OPTIONAL CLASS EXAMPLE";  // Setting value for 5th index
		// It returns an empty instance of Optional class 
		Optional<String> empty = Optional.empty();
		System.out.println(empty);
		// It returns a non-empty Optional
		Optional<String> value = Optional.of(str[5]);
		// If value is present, it returns an Optional otherwise returns an empty Optional
		System.out.println("Filtered value: "+value.filter((s)->s.equals("Abc")));
		System.out.println("Filtered value: "+value.filter((s)->s.equals("JAVA OPTIONAL CLASS EXAMPLE")));
		// It returns value of an Optional. if value is not present, it throws an NoSuchElementException  
		System.out.println("Getting value: "+value.get());
		// It returns hashCode of the value
		System.out.println("Getting hashCode: "+value.hashCode());
		// It returns true if value is present, otherwise false
		System.out.println("Is value present: "+value.isPresent());
		// It returns non-empty Optional if value is present, otherwise returns an empty Optional
		System.out.println("Nullable Optional: "+Optional.ofNullable(str[5]));
		// It returns value if available, otherwise returns specified value, System.out.println("orElse: "+value.orElse("Value is not present"));
		System.out.println("orElse: "+empty.orElse("Value is not present"));
		value.ifPresent(System.out::println);	// printing value by using method reference	
	}
}

输出:

Optional.empty
Filtered value: Optional.empty
Filtered value: Optional[JAVA OPTIONAL CLASS EXAMPLE]
Getting value: JAVA OPTIONAL CLASS EXAMPLE
Getting hashCode: -619947648
Is value present: true
Nullable Optional: Optional[JAVA OPTIONAL CLASS EXAMPLE]
orElse: JAVA OPTIONAL CLASS EXAMPLE
orElse: Value is not present
JAVA OPTIONAL CLASS EXAMPLE
赞(0)
未经允许不得转载:srcmini » Java可选类

评论 抢沙发

评论前必须登录!