我从 RPC 服务收到了一个通用的 Object
类型实例,我想将其转换为 MyClass
类型实例,这个操作的时间复杂度是多少?性能对我的应用程序至关重要。 (对于 Java 和 C# 等语言)
示例:Employee employee = (Employee) person;
或 PurchaseData purchaseData = (PurchaseData) genericData;
最佳答案
转换首先是一个编译时间 Activity 。
在运行时,如果有的话,假设 O(1)。您会看到,所有此类信息(如类结构)在代码执行时都是固定的。
鉴于评论:假设您的对象被反序列化为类 X 的实例,那么 JVM 已经知道该对象实际上属于类 X。该对象存在于内存中,并且它的确切类只需一次查找即可!
除此之外:假设您的对象通过某种 RPC 调用进入,并且它们从某种传输表示反序列化为 JVM 对象……您真的认为时间对于选角有什么影响吗?调用远程服务可能需要几毫秒,甚至几秒。您担心稍后转换此类对象是否需要 5 纳秒或 15 或 25 秒?
唯一可能导致显着性能的情况:当转换出错时,您会遇到 ClassCastException。
关于java - 向下转换对象的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975728/