教程列表
- Guava Optional类详解-处理null值
- Guava Preconditions类-检查参数
- Guava Ordering类处理排序功能
- Guava Objects类详解
- Guava Range类-范围处理
- Guava Throwables类-异常处理
- Guava 集合处理-Multiset接口
- Guava集合处理- Bimap接口
- Guava集合工具类-Table接口映射处理
- Guava字符串连接-Joiner类
- Guava字符串分割处理-Spiltter类
- Guava CharMatcher类处理JAVA char类型值
- Guava ASCII字符转换 CaseFormat类
- Guava处理java byte类型工具类-Bytes类
- Guava 处理java short实用工具类-Shorts类
- Guava处理java int实用工具类-Ints类
- Guava Longs类-long的实用工具类
- Guava Floats类-float基本类型的实用工具类
- Guava Doubles类-double基本类型的实用工具类
- Guava Chars类-char类型的实用工具类
- Guava Booleans类-布尔型基本的实用工具类
- Guava IntMath类-提供整型的Math实用方法
- Guava LongMath类-long基础类型的Math实用方法
- Guava Multimap类-映射到多个值
- Guava cache缓存工具类
开源项目
知识点
相关文章
更多最近更新
更多Guava Optional类详解-处理null值
2019-04-23 23:00|来源: 网路
Optional用于包含非空对象的不可变对象。 Optional对象,用于不存在值表示null。这个类有各种实用的方法,以方便代码来处理为可用或不可用,而不是检查null值。
类声明
以下是com.google.common.base.Optional<T>类的声明:
@GwtCompatible(serializable=true) public abstract class Optional<T> extends Object implements Serializable
类方法
S.N. | 方法及说明 |
---|---|
1 | static <T> Optional<T> absent() 返回没有包含的参考Optional的实例。 |
2 | abstract Set<T> asSet() 返回一个不可变的单集的唯一元素所包含的实例(如果存在);否则为一个空的不可变的集合。 |
3 | abstract boolean equals(Object object) 返回true如果对象是一个Optional实例,无论是包含引用彼此相等或两者都不存在。 |
4 | static <T> Optional<T> fromNullable(T nullableReference) 如果nullableReference非空,返回一个包含引用Optional实例;否则返回absent()。 |
5 | abstract T get() 返回所包含的实例,它必须存在。 |
6 | abstract int hashCode() 返回此实例的哈希码。 |
7 | abstract boolean isPresent() 返回true,如果这支架包含一个(非空)的实例。 |
8 | static <T> Optional<T> of(T reference) 返回包含给定的非空引用Optional实例。 |
9 | abstract Optional<T> or(Optional<? extends T> secondChoice) 返回此Optional,如果它有一个值存在; 否则返回secondChoice。 |
10 | abstract T or(Supplier<? extends T> supplier) 返回所包含的实例(如果存在); 否则supplier.get()。 |
11 | abstract T or(T defaultValue) 返回所包含的实例(如果存在);否则为默认值。 |
12 | abstract T orNull() 返回所包含的实例(如果存在);否则返回null。 |
13 | static <T> Iterable<T> presentInstances(Iterable<? extends Optional<? extends T>> optionals) 从提供的optionals返回每个实例的存在的值,从而跳过absent()。 |
14 | abstract String toString() 返回此实例的字符串表示。 |
15 | abstract <V> Optional<V> transform(Function<? super T,V> function) 如果实例存在,则它被转换给定的功能;否则absent()被返回。 |
继承的方法
这个类继承了以下类的方法:
java.lang.Object
Optional示例:
使用所选择的编辑器,创建下面的java程序,比如 C:/> Guava
GuavaTester.java
import com.google.common.base.Optional; public class GuavaTester { public static void main(String args[]){ GuavaTester guavaTester = new GuavaTester(); Integer value1 = null; Integer value2 = new Integer(10); //Optional.fromNullable - allows passed parameter to be null. Optional<Integer> a = Optional.fromNullable(value1); //Optional.of - throws NullPointerException if passed parameter is null Optional<Integer> b = Optional.of(value2); System.out.println(guavaTester.sum(a,b)); } public Integer sum(Optional<Integer> a, Optional<Integer> b){ //Optional.isPresent - checks the value is present or not System.out.println("First parameter is present: " + a.isPresent()); System.out.println("Second parameter is present: " + b.isPresent()); //Optional.or - returns the value if present otherwise returns //the default value passed. Integer value1 = a.or(new Integer(0)); //Optional.get - gets the value, value should be present Integer value2 = b.get(); return value1 + value2; } }
验证结果
使用javac编译器编译如下类
C:\Guava>javac GuavaTester.java
现在运行GuavaTester看到的结果
C:\Guava>java GuavaTester
看到结果。
First parameter is present: false Second parameter is present: true 10
相关问答
更多-
为什么Guava不为小的ImmutableLists使用专门的类?(Why does Guava not use specialized classes for small ImmutableLists?)[2022-06-01]
你能帮我理解这里涉及的权衡吗? 这是一个权衡: 性能 - 不分配临时数组可以节省成本。 但是,人们需要进行一些广泛的代码分析和基准测试来量化这种节省。 (我怀疑在大多数应用程序中它都是微不足道的。请阅读@Voo提供的这个链接 !) 可读性 - 拥有一堆额外的重载会使javadoc混乱。 可维护性 - 有一堆重载是以不需要临时对象的方式实现的,这需要大量的复制/粘贴编程,这使得将来的代码维护更加困难。 实用程序 - 这些重载的使用频率是多少? 我希望答案“很少”。 字节码占用空间 - 这些额外的重载将导致使用 ... -
只需从构建器中删除expireAfterWrite (它的可选功能): cache = CacheBuilder.newBuilder() .maximumSize(100) .build(....); 这样只有达到maximumSize时才会逐出条目。 Guava的缓存有很好的文档,但您也应该阅读Wiki页面 。 PS如果用“永久”表示“重新启动后会存在”,那么Guava Cache不适合你,因为它是内存缓存。 Just remove expireAfte ...
-
Guava缓存将值存储在RAM中。 请参阅https://github.com/google/guava/wiki/CachesExplained#applicability 。 Guava Caches store values in RAM. See https://github.com/google/guava/wiki/CachesExplained#applicability.
-
番石榴贡献者在这里。 不要使用构造函数,请使用HashBasedTable.create()工厂方法。 (没有参数,或与expectedRows和expectedCellsPerRow 。) 使用table.put("A100", "B100", 5) ,就像使用两个键的Map一样。 Guava contributor here. Don't use the constructor, use the HashBasedTable.create() factory method. (With no argum ...
-
番石榴的IntervalTree(IntervalTree in Guava)[2022-12-17]
Guava没有提供这个,尽管你可以通过找到给定点之前和之后的第一个范围来在RangeSet之上构建这样的东西。 但一般来说,除了类型的比较排序之外,Guava Range对距离,度量或任何其他内容一无所知 。 他们不知道10比15更接近11 。 Guava doesn't provide this, though you might be able to build such a thing on top of a RangeSet by finding the first range before and ... -
在我看来,像Scala的hashString将UTF-16 char的成对转换为int与Guava的hashUnencodedChars不同(没有Charset的hashUnencodedChars被重命名为)。 斯卡拉: val data = (str.charAt(i) << 16) + str.charAt(i + 1) 番石榴: int k1 = input.charAt(i - 1) | (input.charAt(i) << 16); 在Guava中,索引i处的char变为int的16个最低 ...
-
Guava为Multimap提供了一种反演方法。 请参见Multimaps.invertFrom 。 如果您不经常需要反演,或者您的multimap很小,这可能对您没问题。 但这种反转是一个昂贵的过程。 您可以通过简单地按照JB Nizet在评论中建议的正向和反向来获得一些效率。 然而,两者都可以是多重映射以允许非唯一性。 Guava supplies an inversion method for Multimap. See Multimaps.invertFrom. This might do fine ...
-
Guava wiki提供了以下使用ValueGraph示例: MutableValueGraph
weightedGraph = ValueGraphBuilder.directed().build(); weightedGraph.addNode(1); weightedGraph.putEdgeValue(2, 3, 1.5); // also adds nodes 2 and 3 if not already present weightedGraph.putEdg ... -
因为你对com.google.guava:guava:23.3 org.seleniumhq.selenium:selenium-java:3.0.1依赖性com.google.guava:guava:23.3使用org.seleniumhq.selenium:selenium-java:3.0.1可能会让你在十字路口。 但是Selenium发行说明清楚地提到了以下番石榴依赖性: Selenium v2.49.0 :Bump guava到19版 Selenium v3.1.0 :需要更新最新的番石榴版本21 ...
-
AbstractScheduledServiced实现Service 。 Service接口描述了生命周期方法,包括startAsync 。 ServiceState枚举文字包含有关其含义的文档。 处于NEW状态的服务(刚刚创建): 处于此状态的服务处于非活动状态。 它做的工作量极少,占用资源极少。 要使服务执行某些有用的操作,您必须将其转换为RUNNING状态 此状态下的服务正在运行。 这就是为什么你必须在它做任何事之前启动服务的原因。 我还建议不要从构造函数中调用startAsync,而是从创建MySe ...