`instanceof`检查什么来确定对象类型?

ved*_*boy 3 java networking instanceof packet kryonet

我正在使用kryonet从服务器和客户端来回发送对象.只要收到对象,就会运行一个侦听器.它似乎决定对象实例的唯一方法是使用:

if(object instanceof ClientLoginPacket){
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

我想知道什么是instanceof检查以确定对象是否属于特定类型.它检查类是否与所有代码完全相同,是否检查变量和名称?它也检查导入的包吗?你给我的任何信息都可以提供帮助.

我想知道这个的原因是因为我制作数据包的方式,服务器方法中的代码与客户端不同.例如,在我的客户端发送数据包我做:

public void send(){
    Client.sendPacketTCP(this);
}
Run Code Online (Sandbox Code Playgroud)

在我的服务器上我这样做:

public void send(){
    Server.sendPacketTCP(this);
}
Run Code Online (Sandbox Code Playgroud)

Eug*_*ene 6

instanceof是一个jvm指令,它可能是本机代码,但规范说它必须这样做:

INSTANCEOF

真的不认为它检查变量及其名称,这是没用的.它必须遍历类层次结构,直到它可以证明它是某种类型:extends,implements或它是同一个类