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));
使用数组,不会覆盖此方法。
我正在用 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));
使用数组,不会覆盖此方法。