問題タブ [objectinputstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ObjectInputStream および一時フィールドによるシリアル化
この質問は、ObjectInputStream と、一時的として宣言されたフィールドを構築する方法に関するものです。ObjectInputStream の単純なユースケースを検討する
SomeClass の場所
ois.readObject の後の sc.y の値はどうなりますか?
docs.oracle.comで読んだ内容を明確にするよう求めています。
「一時的または静的として宣言されたフィールドは、逆シリアル化プロセスによって無視されます。他のオブジェクトへの参照により、必要に応じてそれらのオブジェクトがストリームから読み取られます。」
一時的なフィールドが無視されるとはどういう意味ですか? そして、それらが一時的なものである場合、ストリームからどのように読み取ることができますか(つまり、シリアル化されていない-どのように理解していますか...)
マティアス
java - ObjectInputStreamReaderとInputStreamReaderの違いは何ですか?
私の先生は、ファイルサーバープログラムObjectInputStreamReader
で書くことが義務付けられていると言いました。理由を聞いたところ、ファイルサーバープログラムとしては快適だとのことでした。必要な理由ではないと思います。なぜInputStreamReader
または他の代替手段を使用できないのですか?上の利点は何ObjectInputStreamReader
ですかInputStreamReader
。
クライアント/サーバーのコードは次のとおりです。
誰もが実際の理由を言うことができますか?
java - java.lang.NullPointerException からのオブジェクトの読み取り中に Android アプリが起動時にクラッシュする
私は最初の Android アプリに取り組んでいます。OnCreate と onRestart でオブジェクトと設定を保存およびロードする機能を追加することを決定するまで、問題なく動作していました。その後、起動時にアプリがクラッシュします。OnCreate から呼び出す setSettings を次に示します。
保存されたブール値は、保存するまでfalseであるはずですが、機能しているとは思いません。これは、問題が発生している可能性のある場所で呼び出される readPlayer です。
これがクラッシュ時に取得する logCat です。
プレーヤーの作成が必要かどうかはわかりませんが、ここにあります
起動するたびに発生し、コードからわかるようにいくつかのことを試しましたが、成功しませんでした。あちこち探してみましたが、何も見つかりません。皆さんが助けてくれることを願っています。
編集: これは、LogCat が問題を示している 72 行目です。
あなたが正しいように見えますが、私が思っていたように新しいプレーヤーを返すのではなく、空のオブジェクトを読み込んでいる可能性があります。オブジェクトの書き込みと読み取りについてよく知らないので、defaultWriteObject と defaultReadObject を使用しました。
編集:読み取り/書き込みを変更し、名前が null であることを確認しようとした後、まだ機能しません。テキストを文字列に設定しようとしても、まだnullPointerExceptionが発生するため、FindViewById(R.id.Player1name)と関係があると思いますが、まだ正確にはわかりません。ViewPagerIndicator を使用して画面ごとに異なるビューを使用していますが、それと関係があるのでしょうか?
java - 変更されたハッシュマップを送信しますが、ObjectOutputStreamとObjectInputStreamを使用して同じものを取得します
上記のコードは2つのファイルからのものです。それらを実行すると、コンソールは同じ結果を出力します。
これはどのように起こりますか?
java - サーバー接続
私はJavaで自分のサーバーをやっています。1 つのソケット接続を行い、クライアントから多くのオブジェクトを受け取る必要があります。私はそれを実行しましたが、これが最善の (最速の) 解決策であるかどうかはわかりません。これが私のコードの例です:
問題は、新しいオブジェクトを受信しようとすると、常に新しい ObjectInputStream を実行する必要があることです。この解決策は正しいですか? 私は非常に高速なサーバーを実行する必要があり、常に新しい ObjectInputStream を実行するのはコストがかかりすぎると考えています。
java - (objectinputstream) ObjectInput.readObject() は私に空のオブジェクトを与えています
私はこのクラスを持っています:
これらのメソッドを使用して、クラス (SaveState オブジェクト) を SD カードに保存し、ファイルからオブジェクトを再度オブジェクトに読み込みます。
オブジェクトを保存し、アプリを閉じるたびに、アプリを開くたびにSDカードからオブジェクトを読み取り、正常に動作します。アプリの新しいバージョン (1.01) を作成したときに問題が発生します。アプリを起動してSDカードからファイルを読み取ろうとすると、ファイルは読み取られますが、オブジェクトクラスのすべての変数は空であり、実際には空ではありません.
コードが正しく動作しないのはなぜですか? 修正するにはどうすればよいですか?
java - ObjectInputStream が NotSerializableException をスローする
を使用してファイルPWlist
からオブジェクトの配列 (と呼ばれる) を読み込もうとしています。配列には、2 つの異なるオブジェクト と が含まれています。読み取りを実行しようとすると、この例外が発生します....dat
ObjectInputStream
LongPW
PinPW
誰かが何が間違っているのか理解するのを手伝ってくれませんか
java - .dat ファイルからシリアル化可能なクラスを読み取れません
私はキーホルダーを書き込もうとしていますが、ObjectOutputStream を使用してパスワードを .dat ファイルに書き込んでから、ObjectInputStream を使用してそれらを読み取りたいと考えています。これはオブジェクトを書くための私のコードです:
これは機能しているように見えますが、ファイルを再度読み取って PWlist 配列にオブジェクトを配置しようとすると、PinPW が Serializable を実装し、インポートされているにもかかわらず、PinPW はシリアライズ可能ではないと表示されます。PinPW の基本クラス (Info) も Serializable を実装し、それをインポートします。これは、ファイルを読み取ったコードです。
PWlist 配列は Info 配列であり、PinPW と longPW は Info を拡張します。
この問題を解決するにはどうすればよいですか?
java - Java: TCP を介した圧縮オブジェクトの読み取り/書き込み
ソケットを介して TCP 経由でいくつかのレコードを転送する必要があります。と を使用ObjectInputStream
しObjectOutputStream
ましたが、うまくいきました。重要な考え方の 1 つは、ソケットが一度開かれ、通信全体を通して開いたままにしておく必要がありますが、両側で複数回読み取りと書き込みを行うことです (つまり、永続的な接続に似ています)。
全体的なパフォーマンスを向上させるために、オブジェクトを書き込む前にオブジェクトを圧縮しようとしましたが、結果は非常に有望でしたが、 と を使用GZIPOutputStream
しByteArrayOutputStream
たため、メモリ オーバーヘッドが大きすぎ、場合によっては OutOfMemory エラーが発生します。
試してみDeflaterOutputStream
ましたが、オブジェクトの書き込みには適していないようでした。この問題を解決する方法はありますか?
java - ObjectOutputStream を別のクラスに渡す
クライアント/サーバー システムで使用する GUI プログラムを開発していますVector
。接続を確立するObjectOutputStream
とObjectInputStream
作成されますが、新しいクラスを開こうとしたときにそれを新しいクラスに渡す方法がわかりません。私のStartup
クラスには、作成されてさまざまなクラスに渡されてさまざまなフィールドが変更されるSerializable
オブジェクト ( Message m
) があり、クライアントとサーバーの間で接続が確立されます。
私のStartup
クラスでは、このコードを持っています...
WhatToDo
クラスで私はこのコードを持っています...
で行ったように、新しいことObjectOutputStream
を行うと、サーバーへの新しい接続が作成されます。で作成した既存のものを使用したい。事前に助けてくれてありがとう!ObjectInputStream
Startup
Streams
Startup
WhatToDo
ボタンを押して を使用しているActionListener
ため、後で で使用するためにストリームをコンストラクターに保存する必要がありますActionListener
。