strman-java 源码阅读

strman-java 源码阅读

最近看到一个项目strman-java声称能满足所有的字符串操作。好奇的进去看了下,发现比较有意思。项目也较小,正好可以花点时间来看下别人是如何优雅的实现字符串操作的。

项目是用gradle构建的 intellj idea居然无压力导入也是出乎我的预料。
项目的test也写的非常完善 就先从test看起走了

  1. 测试这里就用了static的静态引用,刚开始还一时不习惯...
 ....
import static strman.Strman.*;
import static strman.Strman.endsWith;
import static strman.Strman.format;

public class StrmanTest {

    @Test
    public void append_shouldAppendStringsToEndOfValue() throws Exception {
        assertThat(append("f", "o", "o", "b", "a", "r"), equalTo("foobar"));
        assertThat(append("foobar"), equalTo("foobar"));
        assertThat(append("", "foobar"), equalTo("foobar"));
    }
 }

2 主要的类Strman也非常有意思。

/**
 * A String manipulation library without any dependencies
 */
public abstract class Strman {

    private static final Predicate NULL_STRING_PREDICATE = str -> str == null;
    private static final Supplier NULL_STRING_MSG_SUPPLIER = () -> "'value' should be not null.";

    private Strman() {
    }
.....
}

Strman这里定义为抽象的类 我想是为了避免有人将这个类实例化。
开始的时候就定义了两个对字符串操作的lambda表达式。
NULL_STRING_PREDICATE 是判断一个str是否是null。如果是就返回true,等同于这个函数。

pulic void isStrIsNull(String str){
    return null == str;
} 

本来三行的代码,这里一行的代码就实现了。
NULL_STRING_MSG_SUPPLIER 这个是返回一个空字符串。
类似于这个函数


pulic void getStrIsNullMsg(){
    return "'value' should be not null.";
} 

这里暂时还不知道这样写NULL_STRING_MSG_SUPPLIER的意义何在。。。

这里说下 Predicate Supplier 是java 8新增的 java.util.function的接口编程的类
Predicate——接收T对象并返回boolean
Supplier——提供T对象(例如工厂),不接收值

你可能感兴趣的:(strman-java 源码阅读)