2016-06-30 2 views
2

Я генерирую случайный пароль с RandomStringUtils.random. Кажется, странное поведение при генерации пароля во время работы приложения всегда создает пароль с этой структурой: [[email protected], [[email protected], [[email protected]. Он всегда повторяет три первых символа. Мой код для генерации пароля является:RandomStringUtils.random странное поведение в веб-приложении

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

Если я выполняю этот код в методе main, кажется, работает хорошо.

+1

Подробнее о способе toString !! – Jens

+0

@Jens, 'toString' не может помочь с массивами – Andrew

ответ

2

Вы должны обернуть свой массив char[] passwordArrays.toString(char[] a), чтобы увидеть нужный результат.

EDIT (в комментариях):

Он печатает не ссылка на объект, просто вызывается toString() из Object, из-за отсутствия собственного переопределены.

System.out.print[ln] называет toString из экземпляра, который был принят, поэтому следующие строки идентичны:

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

Но, как я уже сказал, что не дает никакой полезной выходной. Вы должны использовать

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

с массивами, которые не переопределяют этот метод.

+0

'System.out.println (" password.toString() "); этот код не отображает содержимое. – angeldev

+0

@angeldev, да, вам нужно 'System.out.println (Arrays.toString (пароль));' – Andrew

+0

@angeldev, я добавил объяснение – Andrew

2

Вы печатаете ссылку на объект ([[email protected], [[email protected], [[email protected]), а не содержимое объекта.

+0

OMG! это правда. Но почему он печатает ссылку на объект внутри приложения и содержимое объекта, когда я запускаю код в основном методе? – angeldev

+0

Вы используете 'System.out.println (пароль);' внутри метода 'main()'? –

+0

Да и внутри кода приложения. – angeldev

Смежные вопросы