2017-07-08 26 views
0

オーバーライドされたプリントライタークラスをデフォルトのプリントライタークラスとして設定する方法。プリントライタオブジェクトを作成するたびに、作成されたオブジェクトは、オーバーライドされたprintwriterクラスのオブジェクトである必要があります。 system.setOut()を設定するのと同様に、プリントライターを設定するための関数もあります。PrintWriterに相当するSystem.setOut()

+0

達成しようとしていることのスニペットを共有できますか?質問を理解しやすくする – Mureinik

+0

私はそれに同意します。あなたのアイデアはうまくいかないので、「これはうまくいかない」以上のものを望むなら、小さな例を挙げてみてください。スタックトレース要素に関するあなたの他のコメントは、「解決する方法」に関するものです...なぜこれを行う必要があるのか​​教えてください! – GhostCat

+0

そのデータがハッキングされるのを防ぐ必要があります。ハッキングされ、ハッカーがそれにアクセスすると、彼は自分が期待するデータではなく ""しか得ていない可能性があります。クラスがあり、メンバーがいます。 Sは私的であり、私はそれを公の機能を通して得ています。 system.out.printlnやprintwriterやhttpservletresponseの作者がアクセスしようとすると、sの代わりに ""を返すべきです。パッケージ内の他の関数がアクセスするたびに、sを返します。これは私がやろうとしていることです。暗号化にintrestedではなく、stacktraceelementを使用して、この関数を呼び出すメソッドを識別します。 – pvkcse

答えて

0

これはできません。あなたの例では、非常に特定のオブジェクトが「置き換えられます」。 System.outのみの動作が異なります。他のストリームはその呼び出しの影響を受けません。

言い換えれば、X()のような呼び出しを変更する方法はありません。 Xオブジェクト以外のものが必要な場合は、new Y()などを呼び出す必要があります。

+0

私はサーブレットの応答からライターを取得する必要があります。だから私はこのライターオブジェクトに特定の文字列を書き込もうとすると、その文字列を空の文字列に設定する必要があります。例えば ​​"sss"と書くと、サーブレットの応答からライターに ""書き込まなければなりません。私はこれを達成する方法はありますか? – pvkcse

+0

可能性があります。また、間違ったアプローチ。作家が何も書かなければならないなら、それに何も書かないでください! – GhostCat

+0

はい、もちろんです。しかし、要件はそのようになります。ヘッドを傷つける... StackTraceElementを試しましたが、使用することはできません。したがって、それを外部の世界に公開する可能性のある関数がアクセスできる場合、その特定のメンバーのために ""戻っていかなければならない方法を見つけなければなりません。今のところ、私はStackTraceElementが唯一の方法だと知っています。でも私はそれを使うことはできません。これを達成するためのクールなものを見つけたら、事前に感謝してください! – pvkcse