Java如何通過(guò)屬性名獲取Object對(duì)象屬性值
Java通過(guò)屬性名獲取Object對(duì)象屬性值
通過(guò)已知的屬性名稱,從對(duì)象里獲取數(shù)據(jù)的方式
通過(guò)將Object轉(zhuǎn)為Map
public Object getPropertyValue(Object t,String objProperty) {
Map<String, String> objMap = null;
try {
objMap = BeanUtils.describe(t);
return objMap.get(objProperty);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}通過(guò)invoke方式
public Object getFieldValueByName(Object o,String fieldName) {
try {
String firstLetter = fieldName.substring(0, 1).toUpperCase();
String getter = "get" + firstLetter + fieldName.substring(1);
Method method = o.getClass().getMethod(getter);
return method.invoke(o);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}調(diào)用方式:
//Map方式
Object obj = getPropertyValue(order, "userId");
if (obj != null) {
Integer userId = Integer.parseInt((String)obj);
}
//invoke方式
Object obj = getFieldValueByName(order, "userId");
if (obj != null) {
Integer userId = (Integer)obj;
}獲取Object對(duì)象中對(duì)應(yīng)的屬性的值(使用IEnumerable)
//對(duì)象名稱,屬性名
//返回該對(duì)象下的數(shù)據(jù)內(nèi)容
public object GetPropertyValue(object info, string field)
{
if (info == null) return null;
Type t = info.GetType();
IEnumerable<System.Reflection.PropertyInfo> property = from pi in t.GetProperties() where pi.Name.ToLower() == field.ToLower() select pi;
return property.First().GetValue(info, null);
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring-retry實(shí)現(xiàn)循環(huán)重試功能
這篇文章主要介紹了Spring-retry 優(yōu)雅的實(shí)現(xiàn)循環(huán)重試功能,通過(guò)@Retryable注解,優(yōu)雅的實(shí)現(xiàn)循環(huán)重試功能,需要的朋友可以參考下2023-07-07
FileOutputStream文件寫(xiě)入類實(shí)現(xiàn)方式
這篇文章主要介紹了FileOutputStream文件寫(xiě)入類實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
Java SpringMVC的@RequestMapping注解使用及說(shuō)明
這篇文章主要介紹了Java SpringMVC的@RequestMapping注解使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
SpringBoot?+?Redis如何解決重復(fù)提交問(wèn)題(冪等)
在開(kāi)發(fā)中,一個(gè)對(duì)外暴露的接口可能會(huì)面臨瞬間的大量重復(fù)請(qǐng)求,本文就介紹了SpringBoot + Redis如何解決重復(fù)提交問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下2021-12-12
springboot實(shí)現(xiàn)postman中form-data傳參實(shí)現(xiàn)過(guò)程
在項(xiàng)目場(chǎng)景開(kāi)發(fā)中,對(duì)接需求要求使用POST請(qǐng)求傳form-data數(shù)據(jù),使用HttpClient請(qǐng)求時(shí)遇到了415錯(cuò)誤,后改為restTemplate,封裝參數(shù)時(shí)使用LinkedMultiValueMap對(duì)象以解決參數(shù)無(wú)法正確解析的問(wèn)題2026-04-04
Java 中實(shí)現(xiàn)隨機(jī)無(wú)重復(fù)數(shù)字的方法
為了更好地理解這個(gè)題意,我們先來(lái)看下具體內(nèi)容:生成一個(gè)1-100 的隨機(jī)數(shù)組,但數(shù)組中的數(shù)字不能重復(fù),即位置是隨機(jī)的,但數(shù)組元素不能重復(fù)2013-03-03
簡(jiǎn)單理解java泛型的本質(zhì)(非類型擦除)
泛型在java中有很重要的地位,在面向?qū)ο缶幊碳案鞣N設(shè)計(jì)模式中有非常廣泛的應(yīng)用。泛型是參數(shù)化類型的應(yīng)用,操作的數(shù)據(jù)類型不限定于特定類型,可以根據(jù)實(shí)際需要設(shè)置不同的數(shù)據(jù)類型,以實(shí)現(xiàn)代碼復(fù)用。下面小編來(lái)簡(jiǎn)單講一講泛型2019-05-05
javaweb項(xiàng)目入門(mén)實(shí)戰(zhàn)詳細(xì)指南
Java?Web開(kāi)發(fā)是指使用Java技術(shù)來(lái)創(chuàng)建動(dòng)態(tài)網(wǎng)站或Web應(yīng)用程序,Java?Web開(kāi)發(fā)主要使用Servlet、JSP(JavaServer?Pages)、JavaBeans等技術(shù)來(lái)實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面和處理業(yè)務(wù)邏輯,這篇文章主要介紹了javaweb項(xiàng)目入門(mén)的相關(guān)資料,需要的朋友可以參考下2025-12-12
Java AQS中CyclicBarrier回環(huán)柵欄的使用
這篇文章主要介紹了Java中的 CyclicBarrier詳解,CyclicBarrier沒(méi)有顯示繼承哪個(gè)父類或者實(shí)現(xiàn)哪個(gè)父接口, 所有AQS和重入鎖不是通過(guò)繼承實(shí)現(xiàn)的,而是通過(guò)組合實(shí)現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下2023-02-02
java實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12

