欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Java中如何將Object對(duì)象轉(zhuǎn)換為具體實(shí)體類對(duì)象

 更新時(shí)間:2025年09月23日 11:30:32   作者:hachi0313  
在Java中,Object轉(zhuǎn)換為實(shí)體類可通過(guò)instanceof檢查轉(zhuǎn)換、Jackson的convertValue方法及Fastjson的parseObject方法實(shí)現(xiàn),前兩者用于類型強(qiáng)制轉(zhuǎn)換,后者適用于JSON解析轉(zhuǎn)換,本文給大家介紹在Java中如何將Object對(duì)象轉(zhuǎn)換為具體實(shí)體類對(duì)象,感興趣的朋友一起看看吧

在Java中,將Object對(duì)象轉(zhuǎn)換為具體實(shí)體類對(duì)象

在Java中,將Object對(duì)象轉(zhuǎn)換為具體實(shí)體類對(duì)象可以通過(guò)以下幾種方法實(shí)現(xiàn):

1‌.使用instanceof關(guān)鍵字進(jìn)行類型檢查和轉(zhuǎn)換‌:

首先,使用instanceof關(guān)鍵字檢查Object對(duì)象是否為目標(biāo)實(shí)體類的類型。

如果是,則進(jìn)行強(qiáng)制類型轉(zhuǎn)換,將其轉(zhuǎn)換為目標(biāo)實(shí)體類對(duì)象。

例如:

Object obj = ...; 
if (obj instanceof User) { 
  User user = (User) obj;
}

2‌.使用Jackson的ObjectMapper類的convertValue方法‌:

Jackson是一個(gè)流行的JSON處理庫(kù),可以輕松地將Object對(duì)象轉(zhuǎn)換為實(shí)體類對(duì)象。

使用方法如下:

ObjectMapper objectMapper = new ObjectMapper(); 
User user = objectMapper.convertValue(obj, User.class);

3.使用Fastjson的JSON.parseObject方法‌:

Fastjson是一個(gè)高效的JSON處理庫(kù),也可以用于將Object對(duì)象轉(zhuǎn)換為實(shí)體類對(duì)象。

使用方法如下:

User user = JSON.parseObject(JSON.toJSONString(obj), User.class);

Java中將Object類型轉(zhuǎn)換為自定義類型的問(wèn)題

Java中如何將Object類型對(duì)象轉(zhuǎn)換為自定義類型(特定情況下)

前置知識(shí) : java中是不能直接將Object類型的數(shù)據(jù)轉(zhuǎn)換為自定義類型的,除非該Object對(duì)象是該自定義類型的實(shí)例或者其子類的實(shí)例。也就是說(shuō),子類型可以轉(zhuǎn)換成為父類型,但是父類型轉(zhuǎn)換為子類型需要父類型的對(duì)象是該子類型的實(shí)例。否則會(huì)拋出ClassCastException。但是對(duì)于某種業(yè)務(wù)場(chǎng)景卻可以進(jìn)行存儲(chǔ)

場(chǎng)景實(shí)例

我們?cè)诮鉀Q緩存擊穿問(wèn)題時(shí),采用邏輯過(guò)期方法時(shí),就會(huì)在緩存中存儲(chǔ)過(guò)期時(shí)間的字段。
而為了統(tǒng)一存儲(chǔ)格式,我們通常會(huì)定義一個(gè)例如RedisData的類型來(lái)統(tǒng)一包裝數(shù)據(jù),方便進(jìn)行轉(zhuǎn)換并存儲(chǔ)。
其中,RedisData的結(jié)構(gòu)如下:

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

那么我們?cè)谌〕鰰r(shí),就需要將取出的data從Object類型轉(zhuǎn)換為我們自己的數(shù)據(jù)類型(例如自定義類型Shop)

解決思路

由上述前置知識(shí)可知,通常情況下是不能轉(zhuǎn)的。
所以對(duì)于我們的寫法中,如何將Object對(duì)象轉(zhuǎn)換為Shop類型呢?

答案是再次借用JsonUtil工具,此時(shí)我們可以將data轉(zhuǎn)換為JsonObject,再通過(guò)反序列化將其轉(zhuǎn)換為Shop類型。

其中暗含的思想就是一個(gè)普通的Object由于你什么信息都沒(méi)有,所以轉(zhuǎn)換為一個(gè)具體類型肯定編譯器會(huì)懷疑轉(zhuǎn)換是否成功。但是對(duì)于一個(gè)Json字符串而言,對(duì)應(yīng)一個(gè)Bean對(duì)象,我們自然就可以想到,將Json字符串的格式和Bean對(duì)象的格式一一對(duì)應(yīng),便可以完成轉(zhuǎn)換。

正確寫法

JsonUtil.toBean((JsonObject)shop , Shop.class) // 需要手動(dòng)引入hutu工具包中的JavaUtil

到此這篇關(guān)于在Java中如何將Object對(duì)象轉(zhuǎn)換為具體實(shí)體類對(duì)象的文章就介紹到這了,更多相關(guān)java object對(duì)象轉(zhuǎn)換實(shí)體類對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot中利用MyBatis進(jìn)行數(shù)據(jù)操作的示例

    SpringBoot中利用MyBatis進(jìn)行數(shù)據(jù)操作的示例

    這篇文章主要介紹了SpringBoot中利用MyBatis進(jìn)行數(shù)據(jù)操作,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 詳解springboot-mysql-pagehelper分頁(yè)插件集成

    詳解springboot-mysql-pagehelper分頁(yè)插件集成

    這篇文章主要介紹了springboot-mysql-pagehelper分頁(yè)插件集成,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java多線程中停止線程遇到線程阻塞的處理方法詳解

    Java多線程中停止線程遇到線程阻塞的處理方法詳解

    這篇文章主要介紹了Java多線程中停止線程遇到線程阻塞的處理方法詳解,在阻塞狀態(tài)下,線程會(huì)釋放CPU資源,從而允許其他線程執(zhí)行,線程阻塞是實(shí)現(xiàn)多線程編程中重要的概念,可以提高程序的效率和資源利用率,需要的朋友可以參考下
    2023-10-10
  • MyBatis 源碼分析 之SqlSession接口和Executor類

    MyBatis 源碼分析 之SqlSession接口和Executor類

    mybatis框架在操作數(shù)據(jù)的時(shí)候,離不開SqlSession接口實(shí)例類的作用,下面通過(guò)本文給大家實(shí)例剖析MyBatis 源碼分析之SqlSession接口和Executor類,需要的朋友參考下吧
    2017-02-02
  • java通過(guò)客戶端訪問(wèn)服務(wù)器webservice的方法

    java通過(guò)客戶端訪問(wèn)服務(wù)器webservice的方法

    這篇文章主要介紹了java通過(guò)客戶端訪問(wèn)服務(wù)器webservice的方法,涉及java創(chuàng)建與調(diào)用webservice的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • Java實(shí)現(xiàn)帶頭結(jié)點(diǎn)的單鏈表

    Java實(shí)現(xiàn)帶頭結(jié)點(diǎn)的單鏈表

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)帶頭結(jié)點(diǎn)的單鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java中的JetCache?實(shí)戰(zhàn)

    Java中的JetCache?實(shí)戰(zhàn)

    這篇文章主要介紹了Java中的JetCache實(shí)戰(zhàn),JetCache是一個(gè)基于Java的緩存系統(tǒng)封裝,提供統(tǒng)一的API和注解來(lái)簡(jiǎn)化緩存的使用,下文更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • SpringMVC使用@ExceptionHandler注解在Controller中處理異常

    SpringMVC使用@ExceptionHandler注解在Controller中處理異常

    這篇文章主要為大家介紹了SpringMVC使用@ExceptionHandler注解在Controller中處理異常示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Java sort集合排序的兩種方式解析

    Java sort集合排序的兩種方式解析

    這篇文章主要介紹了Java sort集合排序的兩種方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 使用idea啟動(dòng)DataX的方法示例

    使用idea啟動(dòng)DataX的方法示例

    這篇文章主要介紹了使用idea啟動(dòng)DataX的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01

最新評(píng)論