[Google Guava札记](三)base

[Google Guava笔记](三)base

2.14    FinalizableSoftReference<T> 抽象类,只有构造函数。 继承了 SoftReference<T>类,实现了 FinalizableReference接口,是有 finalizeReferent()方法的软引用。

 

2.15    FinalizableWeakReference<T> 抽象类,只有构造函数。 继承了 WeakReference<T>类,实现了 FinalizableReference接口,是有 finalizeReferent()方法的弱引用。

2.16    FinalizablePhantomReference<T> 抽象类,只有构造函数。 继承了 PhantomReference<T>类,实现了 FinalizableReference接口,是有 finalizeReferent()方法的虚引用。 

2.17    FinalizableReferenceQueue :引用队列,引用出列时,它的 finalizeReferent() 方法将会被调用。

 

         以下关于Reference的相关知识引自: http://www.blogjava.net/mlzry0612/articles/349967.html,在此对 daniel表示感谢!

         SoftReference 
         SoftReference 
类的一个典型用途就是用于内存敏感的高速缓存。 SoftReference  的原理是:在保持对对象的引用时保证 在  JVM  报告内存不足情况之前将清除所有的软引用。关键之处在于,垃圾收集器在运行时可能会(也可能不会)释放软可及对象。对象是否被释放取决于垃圾 收集器的算法以及垃圾收集器运行时可用的内存数量。 

         WeakReference 

         WeakReference 
类的一个典型用途就是规范化映射( canonicalized mapping )。另外,对于那些生存期相对较长而且重新创 建的开销也不高的对象来说,弱引用也比较有用。关键之处在于,垃圾收集器运行时如果碰到了弱可及对象,将释放  WeakReference  引用的对象。 然而,请注意,垃圾收集器可能要运行多次才能找到并释放弱可及对象。

          PhantomReference 

          PhantomReference 
类只能用于跟踪对被引用对象即将进行的收集。同样,它还能用于执行  pre-mortem  清除操作。 PhantomReference  必须与  ReferenceQueue  类一起使用。需要  ReferenceQueue  是因为它能够充当通知机 制。当垃圾收集器确定了某个对象是虚可及对象时, PhantomReference  对象就被放在它的  ReferenceQueue  上。将  PhantomReference 对象放在  ReferenceQueue  上也就是一个通知,表明  PhantomReference  对象引用 的对象已经结束,可供收集了。这使您能够刚好在对象占用的内存被回收之前采取行动。 

 

2.18     Functions :提供了与 Function 的实例相关的静态的实用工具方法。

静态方法:

toStringFunction() :返回 Function<Object, String> ,该 Function apply(Object o) 方法调用了参数 o toString() 方法。 apply(Object o) 的参数 o 如果为 null ,会抛出异常。

identity() :返回 Function<E, E> ,该 Function apply(Object o) 方法直接返回参数 o

          forMap(Map<K, V> map) :返回 Function<K, V> ,该 Function apply(K key) 方法在 map 中查找键值为参数 key value ,并返回 value ,如果 key 不在 map 中会抛出异常。

          forMap(Map<K, ? extends V> map @Nullable V defaultValue) :与上面的方法类似,但是如果 apply() 方法的参数 key 不在 map 中,会返回 defaultValue

          compose(Function<B, C> g, Function<A, ? extends B> f) :返回 Function<A, C> ,该 Function 定义的方法是方法 g 和方法 f 的组合,对于输入参数,先对其调用方法 f ,然后对结果调用方法 g

          forPredicate(Predicate<T> predicate) :返回 Function<T, Boolean> ,将一个 Predicate 转换为 Function ,该 Function 返回值与 Predicate 相同。

          constant(@Nullable E value) :返回 Function<Object, E> ,该 Function 返回常量 value

 

2.19  Joiner:将文本片段连结起来。

静态方法:

on(String/char separator):返回一个以 separator为分隔的 Joiner

 

成员方法:

appendTo(A appendable, Iterable<?> parts):返回 A,将 parts中的元素的字符串表示添加到 appendable中。

join(Iterable<?> parts):返回字符串。

useForNull(String nullText):返回 Joiner,如果某个被添加的元素为 null,用 nullText代替。

skipNulls():返回 Joiner,如果某个被添加的元素为 null,则跳过该与元素。

          withKeyValueSeparator(String keyValueSeparator):返回一个 MapJoiner, 用 keyValueSeparator作为 MapEntity key value的分隔。

 

2.20  Objects:为 Object操作提供辅助功能。

静态方法:

equal(Object a, Object b):判断 a b是否相等。

hashCode(Object... objects):返回 objects数组的哈希码。

          toStringHelper():返回 ToStringHelper的实例, ToStringHelper是个内部类,有三个 public成员方法: add(String name, Object value) addValue(Object value) toString() toString()返回的字符串类似于: MyClass{name1=value1, name2=value2}

          firstNonNull(T first, T second):如果 first不为 null就返回 first,否则返回 second Second也为 null时会抛出异常。

2.21  Platform

2.22  Preconditions:提供简单的静态方法来验证参数和状态。

静态方法:

checkArgument(boolean expression):如果 expression false则抛出异常。

          checkArgument(boolean expression, String errorMessageTemplate, Object... errorMessageArgs):如果 expression false则抛出异常,异常信息由 errorMessageTemplate errorMessageArgs决定。例如: checkArgument(count > 0, "must be positive: %s", count) ,如果 count -5 ,则抛出异常,异常信息为:“ must be positive -5”

          checkState(boolean expression):如果 expression false则抛出异常。它的重载方法类似与 checkArgument()

checkNotNull(T reference):如果 reference null则抛出异常,否则返回 reference

checkElementIndex(int index, int size):如果 index大于等于 0且小于 size,则返回 index,否则抛出异常。

          checkPositionIndex(int index, int size):与上面的方法类似,区别在于这个方法是检查数组中的位置,因此 index可以等于 size

          checkPositionIndexes(int start, int end, int size):判断 start-end是否是有效的位置。

 

2.23  Predicates:提供了与 Predicate相关的静态实用工具方法。

静态方法:

alwaysTrue():返回 Predicate<T>,该谓词对任何输入都返回 true

alwaysFalse():返回 Predicate<T>,该谓词对任何输入都返回 false

isNull():返回 Predicate<T>,该谓词判断输入是否为 null

notNull():返回 Predicate<T>,与 isNull()相反。

not(Predicate<T> predicate):返回与 predicate效果相反的 Predicate<T>

          and(Iterable<? Extends Predicate<? super T>> components):返回 Predicate<T>,效果是 components中所有 Predicate &&运算 ( )

          or(Iterable<? Extends Predicate<? super T>> components):返回 Predicate<T>,效果是 components中所有 Predicate ||运算 ( )

equalTo(T target):返回 Predicate<T>,该谓词判断输入是否与 target相等。

instanceOf(Class<> clazz):返回 Predicate<T>,该谓词判断输入是否是 clazz的实例。

in(Collection<? Extends T> target):返回 Predicate<T>,该谓词判断输入是否在 target中。

          compose(Predicate<B> predicate, Function<A, ? extends B> function):返回 Predicate<T>,该谓词先对输入调用 function apply()方法,在对结果用谓词 predicate进行判断。

          containsPattern(String pattern):返回 Predicate<T>,该谓词封装了一个以 pattern为正则表达式的 Pattern,用于判断输入的字符串是否能被 Pattern匹配。

          contains(Pattern pattern):返回 Predicate<T>,与上面的方法类似。

2.24  Splitter:用于将字符串分为子串的工具。

2.25  Strings:提供了与 String相关的静态实用工具方法。

 

静态方法:

nullToEmpty(String string):如果 string null则返回“”,否则返回 string

emptyToNull(String string):如果 string null或“”则返回 null,否则返回 string

isNullOrEmpty(String string):如果 string null或“”则返回 true,否则返回 false

          padStart(String string, int minLength, char padChar):如果 string的长度小于 minLength,则在 string的头部补 minLength-string.length() padChar

          padEnd(String string, int minLength, char padChar):与上面的方法类似,只是 padChar会被补在 string的尾部。

repeat(String string, int count):重复 count string

 

2.26  Suppliers:提供了一些有用的 Supplier

静态方法:

          compose(Function<? super F, T> function, Supplier<F> supplier):返回一个 Supplier<T>, 当调用它的 get()方法时,先调用 supplier get(),把结果作为参数调用 function apply()方法,返回最终的结果。

          memoize(Supplier<T> delegate):返回一个 Supplier<T>,当调用它的 get()方法时,先判断有没有缓存的对象,如果有则直接返回对象,否则用 delegate新建一个对象。

          memoizeWithExpiration(Supplier<T> delegate, long duration, TimeUnit unit):与上面的方法类似,但是要判断缓存中的对象是否过期。

          ofInstance(T instance):返回一个 Supplier<T>,当调用它的 get()方法时,始终返回 instance

          supplierFunction():返回一个 Function<Supplier<T>, T>,当调用它的 apply(input)方法时,返回 input.get()

 

2.27 Throwables:提供了与 Throwable相关的静态实用工具方法。

 

以上。