1

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

我知道您必须键入 cast 才能在 java 中使用该对象,如下所示:

joinRoom = (Room) clientInput.readObject();

但是如果我声明一个通用对象来告诉它是什么类型然后确定我将如何处理它,是否有办法?

也许是这样的:

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

然后使用?

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

提前致谢。

4

2 回答 2

3

改用instanceof

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

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

于 2012-08-09T20:50:14.410 回答
0

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

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

于 2012-08-09T20:48:36.727 回答