Java:分布式架构有序列化的问题
-
05-07-2019 - |
题
我有这三类:
命令:
package pack;
public abstract class Command impements java.io.Serializable
{
public abstract void execute();
}
客户:
package pack;
// imports....
public class Client
{
Socket socket;
// Constructor...
public void sendCommand(Command c)
{
try
{
new ObjectOuputStream(socket.getOutputStream()).writeObject(c);
} catch (Exception e) {e.printStackTrace()};
}
}
MyKeyListener:
这keylistener加入的一个组件在JFrame.
public class MyKeyListener implements KeyListener
{
private Client client;
public MyKeyListener(Client c)
{ client = c; }
public void keyTyped(....)......; // This method does nothing
public void keyPressed(KeyEvent e)
{
client.sendCommand(new Command() {
public void execute()
{
new Robot().keyPress(e.getKeyCode());
}
});
}
// The same for keyRelease()....
}
问题是:如果我运行代码,他希望发送命令。流停止写作
因为"MyKeyListener不序列化"???!!但我从来没有试图发送 MyKeyListener
解决方案
嵌套类Java实际上不存在的字节的代码的水平-的编译器的假的他们通过插入隐藏的领域,访问方式和构造.在你的情况下,匿名的子 Command
可能有一个编译器生成的参考 MyKeyListener
实例,其中,它的建立是,即使这一参考是没有用任何东西。
为了解决这个问题,使用的顶级类的命令,而不是匿名的类。
其他提示
提示:试试打字MyKeyListener.这一点。toString()在(匿名)命令级的执行()方法。
不隶属于 StackOverflow