通过Java中的ObjectInputStream实现多种类型的对象

时间:2012-08-09 20:45:55

标签: java

我正在尝试使用ObjectStreams通过套接字连接发送和接收数据。我会使用RMI接口,但android不支持它。通过我的实现,我有多种对象,我想通过流阅读。例如,如果客户端想要从指定的房间断开连接,他们会发送一个Disconnect对象,如果他们想聊聊某人,他们会通过ect发送聊天对象。

我知道你必须输入强制转换才能在java中使用对象:

joinRoom = (Room) clientInput.readObject();

但如果有一种方法,如果我声明一个通用对象来告诉它是什么类型,然后确定我将如何处理它?<​​/ p>

也许是这样的:

Object obj;
obj = (Object) clientInput.readObject();

然后使用?

if(obj.getClass().equals(Room)){....}
if(obj.getClass().equals(Disconnect)){....}

提前感谢。

2 个答案:

答案 0 :(得分:3)

改为使用instanceof

if(obj instanceof Room)
{
    Room room = (Room) obj;
}

instanceof使用 RTTI (运行时类型信息)来检查基类引用(obj)是否在运行时(Room)有效地对应于给定类型。然后你可以安全地执行演员表演(你永远不会遇到ClassCastException)。

答案 1 :(得分:0)

您可以使用instanceof我相信检查类型。

.equals()更适合检查字符串以查看它们是否相同