相关疑难解决方法(0)

在Java中使用instanceof的性能影响

我正在开发一个应用程序,一种设计方法涉及对instanceof操作员的极大使用.虽然我知道OO设计通常会试图避免使用instanceof,但这是一个不同的故事,这个问题纯粹与性能有关.我想知道是否有任何性能影响?是这么快==吗?

例如,我有一个包含10个子类的基类.在一个获取基类的函数中,我会检查该类是否是子类的实例并执行一些例程.

我想解决它的另一种方法是使用"type id"整数原语,并使用位掩码来表示子类的类别,然后只需对子类"type id"进行掩码比较.表示类别的常量掩码.

instanceof莫名其妙地由JVM优化得比较快?我想坚持使用Java,但应用程序的性能至关重要.如果之前一直走在这条路上的人可以提供一些建议,那将会很酷.我是在挑剔太多还是专注于错误的事情来优化?

java performance instanceof

299
推荐指数
11
解决办法
11万
查看次数

如何在JAVA中实现instanceof?

现在我正在编写一个ORM框架,非常关心性能.

在本框架中,我必须使用instanceofClass.isAssignableFrom检查类型兼容性.

所以我对instanceof和的表现有点怀疑Class.isAssignableFrom

究竟有多缓慢?

java performance instanceof

3
推荐指数
1
解决办法
5254
查看次数

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

我正在使用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)

java networking instanceof packet kryonet

3
推荐指数
1
解决办法
270
查看次数

标签 统计

instanceof ×3

java ×3

performance ×2

kryonet ×1

networking ×1

packet ×1