2016-06-30 24 views
2

私はランダムなパスワードをRandomStringUtils.randomで生成しています。アプリケーションの実行中にパスワードを生成すると、それは常にこの構造のパスワードを作成します:[[email protected], [[email protected], [[email protected]。それは常に3つの最初の文字を繰り返します。パスワードを生成するために私のコードは次のとおりです。Webアプリケーションの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[] passwordアレイをArrays.toString(char[] a)とラップして、望ましい結果を確認する必要があります。 (コメント)が

EDIT:

それが原因不在のわずかObjectからtoString()呼び出されるオブジェクト参照は、それ自身のオーバーライドされない印刷します。

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(password));' – Andrew

+0

@angeldev、私は説明を追加しました – Andrew

2

オブジェクトの内容ではなくオブジェクト参照([[email protected], [[email protected], [[email protected])を印刷しています。

+0

OMG!それは本当です。しかし、mainメソッドでコードを実行すると、アプリケーション内のオブジェクト参照とオブジェクトの内容が印刷されるのはなぜですか? – angeldev

+0

'main()'メソッドの中で 'System.out.println(password);'を使っていますか? –

+0

はい、アプリケーションコード内にもあります。 – angeldev

関連する問題