我需要使用反射获取字段值的帮助。有一个类(SocketTest.class),它具有服务器套接字实现,套接字功能工作正常。我试图找到这个类的套接字字段,我打算调用它的getInputStream()方法来接受输入。下面的代码是给我IllegalArgumentException
- 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);
谢谢Holger。我明白,在这种情况下,我需要传递一个SocketTest实例作为参数来获取方法。由于SocketTest.class不会返回实例,那么是否有任何方法来获取现有实例(考虑到在SocketTest类中不能进行更改)。 –
没有这样的“搜索现有实例”功能。你甚至不知道你为什么假设,有一个现存的实例。怎么样创建一个实例? – Holger
在运行时,SocketTest会在特定的端口上创建套接字连接。所以我在想,为了获得该套接字的输入流,我需要现有的SocketTest实例。用新的实例,我会得到新的套接字连接(不是用户将连接的地方)。 –