2015-04-03 17 views
0

有许多!= null S和!= null && !s.isEmpty()是否有当短手(!S =空&& s.isEmpty())

像这样:

if(sidebar.getModel() != null && !sidebar.getModel().isEmpty()) { ... } 

在我们的代码。太多看起来不太好。这个空检查有没有简短的手?哪个Java库为这种简写函数提供了广泛的支持,而不需要那么多依赖于其他Java工件呢?

if(notNull(s))if(notEmpty(s))一样,它检查非空并且不完全是空的。像这样的东西。

+2

为什么不写自己的peice的琐碎的代码? – 2015-04-03 08:37:17

+0

你可以写一些通用的方法;) – 2015-04-03 08:37:23

+0

如果你的代码中无处不在这些检查,你可以通过阅读http:// stackoverflow获益。com/questions/271526/avoid-null-statements-in-java?rq = 1 – Misha 2015-04-03 08:48:37

回答

1

对于String类有StringUtils.isEmpty(String value)apache-commons-lang3。对于其他类型,您可以创建自己的静态方法并通过static import使用它。

+1

对于字符串:“”.equals(inputString)将同时执行空检查和空检查。 – 2015-04-03 08:40:50

+2

@PieterDeBie但它返回false如果字符串为空 – rzysia 2015-04-03 08:43:06

+0

@PieterDeBie什么?如果'“”.equals(“”)''返回'true',而它真的是空的值 – Andremoniy 2015-04-03 08:43:42

0

的Java 1.7你可以使用的工具类Objects

检查指定的对象引用不为空。此方法主要用于在方法和构造做参数验证设计的,如下面所示:

public Foo(Bar bar) { 
    this.bar = Objects.requireNonNull(bar); 
} 

有用链接

UPDATE:

为了避免NullPointerException的Java 1.8有一些特殊类Optional

与此类合作将是SMT如下:

String contents = new String(Files.readAllBytes(Paths.get(Test.ALICE_PATH)), StandardCharsets.UTF_8); 
    List<String> wordList = Arrays.asList(contents.split("[\\P{L}]+")); 

    Optional<String> optionalValue = wordList.stream().filter(s -> s.contains("red")).findFirst(); 
    optionalValue.ifPresent(s -> System.out.println(s + " contains red")); 

    Set<String> results = new HashSet<>(); 
    optionalValue.ifPresent(results::add); 
    Optional<Boolean> added = optionalValue.map(results::add); 

    System.out.println(added); 
    // 
    Optional<String> optionalString = Optional.empty(); 
    String result = optionalString.orElse("N/A"); 
    System.out.println("result: " + result); 

    result = optionalString.orElseGet(() -> System.getProperty("user.dir")); 
    System.out.println("result: " + result); 
+1

这是非常糟糕的决定:如果value为null,它会抛出'NullPointerException'。不是真正的质量保证要求 – Andremoniy 2015-04-03 08:45:02

+1

如果对象为空,则会引发异常。这不是提问者想要的。看来这些方法应该用于验证参数。 – 2015-04-03 08:46:57

1

阿帕奇commons-lang

检查某个字符串是否不为空( “”),NOT NULL,而不是只有空白。

StringUtils.isNotBlank(null)  = false 
StringUtils.isNotBlank("")  = false 
StringUtils.isNotBlank(" ")  = false 
StringUtils.isNotBlank("bob")  = true 
StringUtils.isNotBlank(" bob ") = true 

参数: STR - 要检查的字符串,可以为null

返回: true,如果该字符串不是空的,不为空,而不是空白