日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

PropertyUtils嵌套属性的使用

發(fā)布時(shí)間:2024/8/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PropertyUtils嵌套属性的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一般情況下,在Java中你可以通過(guò)get方法輕松獲取beans中的屬性值。但是,當(dāng)你事先不知道beans的類(lèi)型或者將要訪問(wèn)或修改的屬性名時(shí),該怎么辦?Java語(yǔ)言中提供了一些像java.beans.Introspector這 樣類(lèi),實(shí)現(xiàn)了在運(yùn)行時(shí)檢測(cè)Java類(lèi)并確定屬性get和set方法的名稱(chēng),結(jié)合Java中的反射機(jī)制就可以調(diào)用這些方法了。然而,這些APIs使用起來(lái)比 較困難,并且將Java類(lèi)中一些不必要的底層結(jié)構(gòu)暴露給了開(kāi)發(fā)人員。BeanUtils包中的APIs試圖簡(jiǎn)化動(dòng)態(tài)獲取和設(shè)置bean屬性的過(guò)程。

BeanUtils包中的PropertyUtils類(lèi)中的一些靜態(tài)方法實(shí)現(xiàn)了上面的功能,稍后會(huì)詳細(xì)介紹。首先,介紹一些有用的定義:

JavaBean支持的屬性類(lèi)型一般可以劃分成三類(lèi)–標(biāo)準(zhǔn)的JavaBeans規(guī)范支持其中的一些,也有一部分只有BeanUtils包支持:

  • Simple(單值) – 單值或量,有個(gè)一可以訪問(wèn)或修改的屬性。值的類(lèi)型可能是Java語(yǔ)言的原生類(lèi)型(如:int型),簡(jiǎn)單的類(lèi)(如:java.lang.String),或 者一個(gè)復(fù)雜類(lèi)的對(duì)象,這個(gè)類(lèi)可能來(lái)自Java語(yǔ)言或者來(lái)自應(yīng)用程序再或者來(lái)自應(yīng)用程序中的一個(gè)類(lèi)庫(kù)。

  • Indexed(索 引) – 索引的屬性,屬性中存放有序?qū)ο?#xff08;都是同類(lèi)型的)的集合,每個(gè)對(duì)象都可以通過(guò)一個(gè)非負(fù)的整數(shù)值(或下標(biāo))來(lái)獲取。另外,所有值的集合可以使用一個(gè)數(shù)組來(lái)設(shè) 置或者獲取。作為一個(gè)JavaBeans規(guī)范的擴(kuò)展,BeanUtils包認(rèn)為所有底層數(shù)據(jù)類(lèi)型為java.util.List(或List的一個(gè)實(shí)現(xiàn)) 的屬性都可以被索引。

  • Mapped(映射) – 作為一個(gè)標(biāo)準(zhǔn)JavaBeans APIs的擴(kuò)展, BeanUtils包認(rèn)為所有底層數(shù)據(jù)類(lèi)型為java.util.Map的屬性都可以被"映射"。你可以通過(guò)String類(lèi)型的key值來(lái)設(shè)置或者獲取對(duì)應(yīng)的值。

    PropertyUtils類(lèi)中提供了各種API方法用來(lái)獲取和設(shè)置上述三種類(lèi)型的屬性。在下面的程序片段中,假設(shè)在bean類(lèi)中都定義了如下的方法:

public class Employee { public Address getAddress(String type); public void setAddress(String type, Address address); public Employee getSubordinate(int index); public void setSubordinate(int index, Employee subordinate); public String getFirstName(); public void setFirstName(String firstName); public String getLastName(); public void setLastName(String lastName); }

訪問(wèn)基本屬性
獲取和設(shè)置simple屬性很簡(jiǎn)單。在Javadocs中查看下面兩個(gè)方法:

  • PropertyUtils.getSimpleProperty(Object bean, String name)

  • PropertyUtils.setSimpleProperty(Object bean, String name, Object value)

    使用這兩個(gè)方法,你可以動(dòng)態(tài)地修改employee的name屬性:

?

Employee employee = ...; String firstName = (String) PropertyUtils.getSimpleProperty(employee, "firstName"); String lastName = (String) PropertyUtils.getSimpleProperty(employee, "lastName"); ... manipulate the values ... PropertyUtils.setSimpleProperty(employee, "firstName", firstName); PropertyUtils.setSimpleProperty(employee, "lastName", lastName);

對(duì)于indexed(索引)屬性,你有兩種選擇 - 你既可以在屬性名后面添加方括號(hào)在里面放上一個(gè)下標(biāo),也可以在調(diào)用方法時(shí)將其作為一個(gè)獨(dú)立參數(shù):

  • PropertyUtils.getIndexedProperty(Object bean, String name)

  • PropertyUtils.getIndexedProperty(Object bean, String name, int index)

  • PropertyUtils.setIndexedProperty(Object bean, String name, Object value)

  • PropertyUtils.setIndexedProperty(Object bean, String name, int index, Object value)

    屬性名的下標(biāo)只能是整數(shù)常量。如果你想獲取的項(xiàng)的索引是計(jì)算出來(lái)的,你可以將屬性名和索引作為字符串組合起來(lái)。例如,你可以向下面這樣做:

Employee employee = ...; int index = ...; String name = "subordinate[" + index + "]"; Employee subordinate = (Employee) PropertyUtils.getIndexedProperty(employee, name); Employee employee = ...; int index = ...; Employee subordinate = (Employee) PropertyUtils.getIndexedProperty(employee, "subordinate", index);

類(lèi)似的,獲取和設(shè)置mapped(映射)屬性的方法同樣有兩對(duì)。與indexed(索引)不同的是額外的屬性是用括號(hào)括起來(lái)的(“(”和“)”)而不是方括號(hào),并且獲取和設(shè)置值時(shí)如同從底層的map中獲取和設(shè)置值一樣。

  • PropertyUtils.getMappedProperty(Object bean, String name)

  • PropertyUtils.getMappedProperty(Object bean, String name, String key)

  • PropertyUtils.setMappedProperty(Object bean, String name, Object value)

  • PropertyUtils.setMappedProperty(Object bean, String name, String key, Object value)

    例如,你可以使用下面兩種方法設(shè)置employee的家庭住址:

Employee employee = ...; Address address = ...; PropertyUtils.setMappedProperty(employee, "address(home)", address); Employee employee = ...; Address address = ...; PropertyUtils.setMappedProperty(employee, "address", "home", address);

訪問(wèn)嵌套屬性
在上面的例子中,我們假設(shè)你將bean作為第一個(gè)參數(shù)傳入PropertyUtils方法,并希望獲取指定屬性的值。然而,如果屬性的值是一個(gè)Java對(duì)象,并且你希望進(jìn)一步獲取這個(gè)Java對(duì)象的某個(gè)屬性的值?

例如,假設(shè)你事實(shí)上想要獲取的值是employee家庭住址中的city屬性。使用標(biāo)準(zhǔn)的Java編程技術(shù)直接獲取bean的對(duì)應(yīng)屬性,你可以這樣寫(xiě):

  • String city = employee.getAddress(“home”).getCity();

    使用PropertyUtils類(lèi)中的等效機(jī)制被稱(chēng)為嵌套屬性訪問(wèn)。使用這種方法,你將訪問(wèn)路徑上的屬性的名稱(chēng)用“.”拼接起來(lái) – 與你在JavaScript執(zhí)行嵌套屬性訪問(wèn)的方式非常相似。

    • PropertyUtils.getNestedProperty(Object bean, String name)

    • PropertyUtils.setNestedProperty(Object bean, String name, Object value)

      PropertyUtils中等效于上面的Java代碼將是這樣:

  • String city = (String) PropertyUtils.getNestedProperty(employee, “address(home).city”);

    最后,方便起見(jiàn),PropertyUtils提供了如下一組方法,它們接收simple、indexed和mapped屬性的任意組合方法,支持任意層次的嵌套:

    • PropertyUtils.getProperty(Object bean, String name)

    • PropertyUtils.setProperty(Object bean, String name, Object value)

      你可以像這樣使用:

    Employee employee = ...; String city = (String) PropertyUtils.getProperty(employee, "subordinate[3].address(home).city");

    總結(jié)

    以上是生活随笔為你收集整理的PropertyUtils嵌套属性的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 一区二区三区四区精品 | 狠狠做深爱婷婷综合一区 | 国产精品-色哟哟 | 高清国产一区 | 黄av在线播放 | 午夜av在线| 亚洲三区视频 | 香蕉一区二区三区四区 | jizz网站| 在线观看国产一级片 | 成人三级在线看 | 国产一线二线在线观看 | 高跟肉丝丝袜呻吟啪啪网站av | 亚洲国产激情 | 中国av免费 | 国产精品视频在线免费观看 | 精品国产精品三级精品av网址 | 国内成人在线 | 在线理论片 | 亚洲欧美一区二区三区情侣bbw | 91网在线播放 | 欧美色图19p | 伊人99在线| 日本少妇一区二区 | 五月激情天 | 亚洲AV无码一区二区伊人久久 | 黑人操亚洲女人 | h网站在线播放 | 国产青青视频 | 热久久精品 | 毛片免费在线观看视频 | 初尝情欲h名器av | 日韩一区二区三区久久 | 狂野欧美性猛交xxⅹ李丽珍 | 欧美日韩国产在线观看 | 国产综合在线观看 | 久久九九免费视频 | 96超碰在线 | www.欧美| 亚洲xxxx天美 | av在线播放网| 欧美精品一二三四 | 亚洲综合网av| 国产精品久久久久久亚洲毛片 | 成人性生活毛片 | 日本成人综合 | 手机看片日韩 | 在线看片黄 | 91极品视觉盛宴 | 蜜桃av噜噜一区二区三区麻豆 | www亚洲一区 | 久草中文在线 | 深爱五月网 | 日韩欧美在线观看一区 | 欧美日韩国产精品综合 | 久久一道本 | 91桃色在线观看 | 初高中福利视频网站 | 色人综合| 日韩三级国产精品 | 美丽的姑娘在线观看免费 | 天堂av电影在线观看 | 深夜激情影院 | 欧美青草视频 | 亚洲一区二区免费电影 | 黄网站免费观看 | 欧美 日韩 视频 | 九九超碰| 亚洲国产18| 欧美 日韩 人妻 高清 中文 | 亚洲免费视频网站 | 中文字幕一区二区三区四区五区 | 欧美 日韩 国产 精品 | 黄网站欧美内射 | 国产精品伦理一区 | 精品婷婷| 免费网站成人 | 少妇2做爰bd在线意大利堕落 | caobi视频| 欧美爽爽爽 | 亚洲av无码久久精品色欲 | 久热精品视频在线观看 | 夜夜爱爱 | 婷婷综合久久 | 我会温柔一点的日剧 | 欧美韩国日本在线 | 九色在线 | 亚洲码在线观看 | 成人涩涩网 | 国产精品jizz| 日韩综合久久 | 久久久夜色| 精品一区二区精品 | 日韩精品大片 | 4388成人网 | 蜜桃视频在线观看污 | 国产成人精品一区二区 | 精品久久久久久无码国产 | 欧美高清一区二区三区四区 |