这个轮子将是一个用于生成指定长度随机字符串的工具类。
package com.example.util;import java.security.SecureRandom;
import java.util.Locale;
import java.util.Objects;
import java.util.Random;public class RandomStringGenerator {private static final String ALPHA_NUMERIC_STRING = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";private final Random random;private final int length;public RandomStringGenerator(int length) {this(length, new SecureRandom());}public RandomStringGenerator(int length, Random random) {if (length < 1) throw new IllegalArgumentException("length must be positive");this.length = length;this.random = Objects.requireNonNull(random, "random must not be null");}public String generate() {StringBuilder sb = new StringBuilder(length);for (int i = 0; i < length; i++) {int randomIndex = random.nextInt(ALPHA_NUMERIC_STRING.length());sb.append(ALPHA_NUMERIC_STRING.charAt(randomIndex));}return sb.toString();}
}
解释:
这个轮子包含一个RandomStringGenerator类,有两个构造函数和一个generate()方法。其中,第一个构造函数可以接收一个指定长度参数,使用SecureRandom随机数生成器来生成随机字符串。第二个构造函数可以接收一个指定长度和自定义的随机数生成器参数。generate()方法用于生成随机字符串。
在类中使用了一些命名规范,如:ALPHA_NUMERIC_STRING被定义为常量,使用全大写字母和下划线分隔符的命名方式。random和length是实例变量,使用驼峰式命名法。
在类中也使用了Java文档注释(Javadoc)来描述类、构造函数和方法的功能和使用方法。
package com.example.util;import org.junit.jupiter.api.Test;import java.util.HashSet;
import java.util.Set;import static org.junit.jupiter.api.Assertions.*;class RandomStringGeneratorTest {@Testvoid generate_returnsStringWithCorrectLength() {int length = 10;RandomStringGenerator generator = new RandomStringGenerator(length);String result = generator.generate();assertEquals(length, result.length());}@Testvoid generate_returnsUniqueStrings() {int length = 10;int numStrings = 1000;RandomStringGenerator generator = new RandomStringGenerator(length);Set generatedStrings = new HashSet<>();for (int i = 0; i < numStrings; i++) {generatedStrings.add(generator.generate());}assertEquals(numStrings, generatedStrings.size());}
}
上一篇:KubeSphere 社区双周报 | OpenFunction v1.0.0 发布 | 2023.03.03-03.16
下一篇:最新或2023(历届)中学生法制教育手抄报的模板设计 法制教育手抄报空白版可涂色模板 大学生法制教育手抄报模板大全