寻找RandomStringUtils的简洁替代方案

Mic*_*fel 8 java apache-commons

这个问题已经过时了.org.apache.commons:commmons-lang3:3.7删除了已弃用的标志,并确认了3.8.

更新后org.apache.commons:commons-lang3:3.6,3.5我得到许多关于RandomStringUtils被弃用的警告.建议的替代方案RandomStringGenerator来自commons-text.但是,如果您想要的只是一个字符串(例如,在单元测试中),那么该类非常笨拙.相比:

String name1 = RandomStringUtils.randomAlphabetic(FIRST_NAME_LENGTH);
String name2 = new RandomStringGenerator.Builder().withinRange('a', 'z').build()
        .generate(FIRST_NAME_LENGTH);
Run Code Online (Sandbox Code Playgroud)

(我知道这甚至不是相同的语义,但想要保持简短.)

所以我正在寻找一种简短而优雅的方式,理想情况下是直接替换; Java 8,Spring,Guava甚至只测试库都是受欢迎的.

Mic*_*dis 4

我会考虑使用Facade 模式来包装类的“笨拙” RandomStringGenerator。

例子:

public class RandomStringUtilsFacade
{
    public static String randomAlphabetic (final int firstNameLength)
    {
        return randomAlphabetic(firstNameLength, 'a', 'z');
    }

    // If you want to use the range
    public static String randomAlphabetic (final int firstNameLength, 
                                           final char low, final char high)
    {
        return new RandomStringGenerator.Builder().withinRange(low, high).build()
        .generate(firstNameLength);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 当然,加上 15 行立面后,它就是一行。:-) 我想我最终会按照这些思路做一些事情。让我有机会添加专门的名字生成器。 (2认同)