向下投射对象的时间复杂度是多少?

时间:2018-06-21 18:53:14

标签: java c# optimization casting time-complexity

我从RPC服务收到了一个通用的Object类型的实例,该实例要转换为MyClass类型的实例,此操作的时间复杂度是多少?性能对我的应用程序至关重要。 (对于Java和C#等语言)

示例:Employee employee = (Employee) person;PurchaseData purchaseData = (PurchaseData) genericData;

1 个答案:

答案 0 :(得分:2)

铸造是所有 compile 时间活动。

在运行时,如果有的话,假设为O(1)。您会看到,在执行代码时,所有此类信息(如类结构)都是固定的

给出评论:假设您的对象被反序列化为类X的实例,那么JVM已经知道该对象实际上是类X。该对象存在于内存中,并且其确切的类是只需查找一次!

除此之外:假设您的对象是通过某种RPC调用进入的,并且它们已从某种传输表示形式被反序列化到JVM对象中……您真的觉得那时候关于广播问题?调用远程服务可能需要几毫秒,甚至几秒钟。您是否担心以后再投射此类对象会花费5纳秒或15或25?

只有在遇到ClassCastException时,它才会变得昂贵...