RandomStringUtils.random Web 应用程序中的奇怪行为

RandomStringUtils.random strange behavior in web application

我正在用 RandomStringUtils.random 生成一个随机密码。当应用程序为 运行 时生成密码时,它似乎有一个奇怪的行为,它总是创建一个具有这种结构的密码:[C@1c3f05e5, [C@2b15e4de, [C@18c628b6。它总是重复前三个字符。我生成密码的代码是:

char[] password = RandomStringUtils.random(10, 0, 0, true, true, null, 
                new SecureRandom()).toCharArray();

如果我在 main 方法中执行此代码,它似乎运行良好。

您正在打印对象引用([C@1c3f05e5, [C@2b15e4de, [C@18c628b6)而不是对象的内容。

您应该用 Arrays.toString(char[] a) 包装您的 char[] password 数组以查看所需的结果。

编辑(评论):

它打印的不是对象引用,只是从 Object 调用 toString(),因为它自己被覆盖了。

System.out.print[ln] 从已传递的实例调用 toString,因此以下行是相同的:

System.out.print(password);
System.out.print(password.toString());

但是,正如我已经说过的,这不会提供任何有用的输出。你应该使用

System.out.print(Arrays.toString(password));

使用数组,不会覆盖此方法。