リフレクションを使用してフィールドの値を取得する際に助けが必要です。サーバーソケットの実装を持つクラス(SocketTest.class)があり、ソケットの機能は正常に動作しています。このクラスのソケットフィールドを取得しようとしているので、getInputStream()メソッドを呼び出して入力を受け入れようとしています。次のコードは私にIllegalArgumentException
与えている - つまりクラスString
を表すClass
返される、String
インスタンス"SocketTest"
にgetClass()
を起動する表現"SocketTest".getClass()
Can not set java.net.Socket field com.test.SocketTest.socket to java.lang.Class
リフレクションを使用してフィールドの値を取得中に例外を取得する
Field socketField = SocketTest.class.getDeclaredField("socket");
socketField.setAccessible(true);
Class<?> socketTest = "SocketTest".getClass();
Socket socket = (Socket)socketField.get(socketTest);
ありがとう、ホルガー。私はこの場合、メソッドを取得するためのパラメータとしてSocketTestのインスタンスを渡す必要があることを理解しています。 SocketTest.classはインスタンスを返さないため、既存のインスタンスを取得する方法はありません(SocketTestクラスで変更を行うことはできないと考えている)。 –
「既存インスタンスの検索」機能はありません。なぜあなたが仮定しているのか、既存のインスタンスがまったく存在しないことさえ明らかではありません。インスタンスの作成はどうですか? – Holger
実行時に、SocketTestは特定のポートにソケット接続を作成します。だから私は、そのソケットの入力ストリームを取得するために、私はSocketTestの既存のインスタンスが必要になると考えていました。新しいインスタンスでは、新しいソケット接続(ユーザーが接続される場所ではない)を取得します。 –