Java中将Object类型转换为自定义类型的问题

Java中如何将Object类型对象转换为自定义类型(特定情况下)


前置知识 : java中是不能直接将Object类型的数据转换为自定义类型的,除非该Object对象是该自定义类型的实例或者其子类的实例。也就是说,子类型可以转换成为父类型,但是父类型转换为子类型需要父类型的对象是该子类型的实例。否则会抛出ClassCastException。但是对于某种业务场景却可以进行存储

场景实例

我们在解决缓存击穿问题时,采用逻辑过期方法时,就会在缓存中存储过期时间的字段。
而为了统一存储格式,我们通常会定义一个例如RedisData的类型来统一包装数据,方便进行转换并存储。
其中,RedisData的结构如下:

@Data
public class RedisData {
    private LocalDateTime expireTime;
    private Object data;
}

那么我们在取出时,就需要将取出的data从Object类型转换为我们自己的数据类型(例如自定义类型Shop)

解决思路

由上述前置知识可知,通常情况下是不能转的。
所以对于我们的写法中,如何将Object对象转换为Shop类型呢?

答案是再次借用JsonUtil工具,此时我们可以将data转换为JsonObject,再通过反序列化将其转换为Shop类型。

其中暗含的思想就是一个普通的Object由于你什么信息都没有,所以转换为一个具体类型肯定编译器会怀疑转换是否成功。但是对于一个Json字符串而言,对应一个Bean对象,我们自然就可以想到,将Json字符串的格式和Bean对象的格式一一对应,便可以完成转换。

正确写法
JsonUtil.toBean((JsonObject)shop , Shop.class) // 需要手动引入hutu工具包中的JavaUtil
posted @ 2025-02-27 16:48  带一把雨伞当剑  阅读(18)  评论(0)    收藏  举报