2 base:像这个包名所描述的,提供了基本的实用工具库和接口。
接口:
2.1 FinalizableReference:如果引用被垃圾回收后还有代码需要执行,实现此接口。只有一个方法: void finalizeReferent(),这个方法在引用被垃圾回收时由后台线程调用,除非安全限制阻止了后台线程的启动,这种情况下当新的引用被创建时调用此方法。
2.2 Function<F, T>:根据输入值决定输出。有两个方法: T apply(@Nullable F input), boolean equals(@Nullable Object object)。
2.3 Predicate<T>:根据输入返回 ture或 false,谓词。 有两个方法: boolean apply(@Nullable T input), boolean equals(@Nullable Object object)。
2.4 Supplier<T>:提供某种类型的对象的类。 可以是 factory、 generator、 builder、 closure等。只有一个方法 T get()。
2.11 Equivalence<T>:决定两个实例是否被判定为等效的策略。有两个方法: boolean equivalent(@Nullable T a, @Nullable T b)、 int hash(@Nullable T t)。
2.28 Ticker:与时间有关的类,返回从某个定点时间到现在的纳秒数。有一个方法: read()。
枚举类:
2.5 CaseFormat:多种 ASCII大小写格式转换的工具类。枚举值有:小写的连字符、小写的下划线、 lower_camel、 upper_camel和大写的下划线。有一个 public方法: to(CaseFormat format, String s),它根据 format对 s进行相应转换。
类:
2.6 Ascii:提供了一组静态变量和与 Ascii相关的静态方法。静态变量包括从 0到 32,以及 127的 Ascii码。 静态方法包括 toLowerCase(String)、 toLowerCase(Char)、 toUpperCase(String)、 toUpperCase(Char)、 isUpperCase(Char)、 isLowerCase(Char)。
2.7 CharMatcher:实现了 Predicate接口,根据输入的字符返回 true或 false。是一个抽象类,内部有多个子类,包括公有的静态类和匿名内部类。
公有的静态变量:
WHITESPACE: CharMatcher,根据最新的 Unicode标准,判断一个字符是否是空白符。
BREAKING_WHITESPACE: CharMatcher,判断一个字符是否是可以用来分词的空白符。
ASCII: CharMatcher,判断一个字符是否是 ASCII,即小于 128。
DIGIT: CharMatcher,根据 Unicode判断一个字符是否是数字。
JAVA_DIGIT: CharMatcher,根据 Java中 Charactor.isDigit(char)的定义来判断一个字符是否是数字。
JAVA_LETTER: CharMatcher,根据 Java中 Charactor.isLetter(char)的定义来判断一个字符是否是字母。
JAVA_LETTER_OR_DIGIT: CharMatcher,根据 Java中 Charactor.isLetterOrDigit(char)的定义来判断一个字符是否是字母或数字。
JAVA_UPPER_CASE: CharMatcher,根据 Java中 Charactor.isUpperCase(char)的定义来判断一个字符是否是大写格式。
JAVA_LOWER_CASE: CharMatcher,根据 Java中 Charactor.isLowerCase(char)的定义来判断一个字符是否是小写格式。
JAVA_ISO_CONTROL: CharMatcher,根据 Java中 Charactor.isISOControl(char)的定义来判断一个字符是否是 ISO控制字符, ISO控制字符的范围为 \u0000-\u001f和 \u007f- \u009f。
INVISIBLE: CharMatcher,判断一个字符是否为不可见的,包括 SPACE_SEPARATOR, LINE_SEPARATOR, PARAGRAPH_SEPARATOR, CONTROL, FORMAT, SURROGATE, 和 PRIVATE_USE 。
SINGLE_WIDTH: CharMatcher,判断一个字符是否为单字,如果不能判断则猜测它是双字的,返回 false。
ANY: CharMatcher,任意字符。
NONE: CharMatcher,与 ANY相反,不匹配任何字符。
静态方法:
is(final char match):返回 CharMatcher,方法内有个 CharMatcher的匿名内部类,它判断一个字符是否为 match。
isNot(final char match):返回 CharMatcher,作用与 is()相反。
anyOf(final CharSequence sequence):返回 CharMatcher,判断一个字符是否在 sequence内。
noneOf(CharSequence sequence):返回 CharMatcher,与 anyOf()相反。
inRange(final char startInclusive, final char endInclusive):返回 CharMatcher,判断一个字符是否在 startInclusive和 endInclusive范围内。
forPredicate(final Predicate<? super Character> predicate):返回 CharMatcher,将参数中的 predicate包装成 CharMatcher。
成员方法:
matches(char c):根据 c返回 true或 false。
negate():返回与当前 CharMatcher作用相反的 CharMatcher。
and(CharMatcher other):返回 this与 other效果的 CharMatcher。
or(CharMatcher other):返回 this或 other效果的 CharMatcher。
precomputed():返回 CharMatcher,该 CharMatcher在检索时比原始的 CharMatcher效率高,但是预处理也需要花时间,所以只有当某个 CharMatcher需要被使用上千次的时候才有必要进行预处理。这个方法在 GWT中被调用时没有效果,无法判断 precomputed()返回的 CharMatcher是否更快,但是它消耗了很多内存,因此在浏览器中使用很不划算。
matchesAnyOf(CharSequence sequence):如果 sequence中有字符能匹配,返回 true。
matchesAllOf(CharSequence sequence):如果 sequence中的所有字符都能匹配,返回 true。
matchesNoneOf(CharSequence sequence):如果 sequence中的所有字符都不能匹配,返回 true。
indexIn(CharSequence sequence):返回 suquence中第一个被匹配到的字符的位置,如果没有被匹配到的字符,返回 -1。
indexIn(CharSequence sequence, int start)、 lastIndexIn(CharSequence sequence):与上面的方法类似。
countIn(CharSequence sequence):返回 sequence中匹配到的字符数。
removeFrom(CharSequence sequence):返回 sequence删除匹配到的字符后的字符串。
retainFrom(CharSequence sequence):返回 sequence删除未匹配到的字符后的字符串。
replceFrom(CharSequence sequence, char replacement):将 sequence中被匹配到的字符替换为 replacement。
replceFrom(CharSequence sequence, CharSequence replacement):与上面的方法类似。
trimFrom(CharSequence sequence):删除 sequnce头尾被匹配到的字符。例如: CharMatcher.anyOf(" ab ").trimFrom(" abacatbab ") 返回 cat 。
trimLeadingFrom(CharSequence sequence)、 trimTrailingFrom(CharSequence sequence)分别删除 sequence头部、尾部被匹配到的字符。
collapseFrom(CharSequence sequence, char replacement):把 sequence中连续被匹配到的字符用一个 replacement替换。例如: CharMatcher.anyOf(" eko ").collapseFrom("bookkeeper", ' - ') 返回” b-p-r” 。
trimAndCollapseFrom(CharSequence sequence, char replacement)。
apply(Character character): Predicate接口中声明的方法,作用与 matches相似。
2.8 Charsets:字符集,定义了所有 Java平台都支持的六个标准字符集的实例,包括: US_ASCII、 ISO_8859_1、 UTF_8、 UTF_16BE、 UTF_16LE、 UTF_16。
2.9 Defaults:提供了所有 Java类型的默认值。有一个静态方法: defaultValue(Class type),返回 type的默认值。
2.10 Enums:
2.12 Equivalences:包含一个静态的创建 Equivalence实例的工厂方法。
静态方法:
equals():返回一个 Equivalence<Object>,如果两个对象相等 (equal),则可判定为等效。
identity():返回一个 Equivalence<Object>,如果两个对象是同一个对象,判定为等效。
pairwise(Equivalence<? super T> elementEquivalence):返回一个 Equivalence<Object>,是 PairwiseEquivalence<T>类型的,对可迭代的对象进行判定。判定的策略是对相同位置的元素用 elementEquivalence进行判定,如果至少有一对元素不等效,那么判定这两个可迭代对象不等效。
2.13 PairwiseEquivalence<T>:实现了 Equivalence<Iterable<T>>接口,判定两个可迭代对象是否等效。
(未完待续)
以上。