我正在尝试使用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)){....}
提前感谢。
答案 0 :(得分:3)
改为使用instanceof
:
if(obj instanceof Room)
{
Room room = (Room) obj;
}
instanceof使用 RTTI (运行时类型信息)来检查基类引用(obj)是否在运行时(Room)有效地对应于给定类型。然后你可以安全地执行演员表演(你永远不会遇到ClassCastException
)。
答案 1 :(得分:0)
您可以使用instanceof我相信检查类型。
.equals()更适合检查字符串以查看它们是否相同