在Java中转储未知对象而不使用toString()

时间:2016-02-18 16:09:09

标签: java tcp tostring

我的Java套件使用ObjectOutputStream和ObjectInputStream通过TCP / IP流对象。

有时接收方会从发件人那里获取一个未知对象。例如(删除所有异常捕获和一致性测试):

  ObjectInputStream sInput = new ObjectInputStream(socket.getInputStream());  
  while (true) {
        Object receivedObject = sInput.readObject();
        System.out.println("Received object class: " + 
                 receivedObject.getClass().getSimpleName() + 
                 "\nValue: [" + receivedObject.toString() + "]");
 }

我偶尔会得到这样的输出:

Received object class: Object
Value: [java.lang.Object@12345678]

有没有办法转储对象?我的意思是,真的转储对象。不重写toString()。 (我发送的每个对象都正确定义了toString()方法。)

似乎有些东西在线路传输中混淆了,因此接收Java VM无法告诉我对象是什么。

我的第一个想法是客户端和服务器的Java类不匹配。 (这个可能会导致此输出。)但是我通过从完全相同的类文件(相同的磁盘,相同的文件夹等)运行客户端和服务器来消除这种可能性。

提前致谢!

0 个答案:

没有答案