Java BeanUtils - การเข้าถึงคุณสมบัติที่ซ้อนกัน
คำอธิบาย
คุณสามารถเข้าถึงค่าของคุณสมบัติที่ซ้อนกันของ bean โดยการต่อชื่อคุณสมบัติของเส้นทางการเข้าถึงโดยใช้ "." ตัวคั่น
คุณสามารถรับและตั้งค่าของ Nested คุณสมบัติโดยใช้วิธีการด้านล่าง:
PropertyUtils.getNestedProperty (ออบเจ็กต์, สตริง)
PropertyUtils.setNestedProperty (Object, String, Object)
พารามิเตอร์:
Object: เป็นถั่วที่มีคุณสมบัติที่จะได้รับหรือแก้ไข
String: เป็นชื่อของคุณสมบัติที่ซ้อนกันที่จะได้รับหรือแก้ไข
ตัวอย่าง
ในตัวอย่างนี้คุณจะเห็นวิธีรับและตั้งค่าคุณสมบัติที่ซ้อนกัน เราจะสร้างสามคลาส SubBean , AppLayer1Beanสำหรับถั่วและBeanUtilsDemoเป็นโปรแกรมหลักในการเรียกใช้
import org.apache.commons.beanutils.PropertyUtils;
public class BeanUtilsDemo {
public static void main(String args[]){
try{
// create the bean
AppLayer1Bean nested = new AppLayer1Bean();
// set a SubBean which is part of another bean
SubBean sb = new SubBean();
sb.setStringProperty("Hello World from SubBean");
nested.setSubBean(sb);
// accessing and setting nested properties
PropertyUtils.setNestedProperty(
nested, "subBean.stringProperty",
"Hello World from SubBean, set via Nested Property Access");
System.out.println(
PropertyUtils.getNestedProperty(nested, "subBean.stringProperty"));
}
catch(Exception e){
System.out.println(e);
}
}
}
ตอนนี้เราจะสร้างคลาสอื่นชื่อSubBean.javaดังที่แสดงด้านล่าง:
public class SubBean {
private int intProperty;
private String stringProperty;
public void setIntProperty(int intProperty) {
this.intProperty = intProperty;
}
public int getIntProperty() {
return this.intProperty;
}
public void setStringProperty(String stringProperty) {
this.stringProperty = stringProperty;
}
public String getStringProperty() {
return this.stringProperty;
}
}
สร้างอีกหนึ่งคลาสAppLayer1Bean.javaพร้อมกับรหัสด้านล่าง:
public class AppLayer1Bean {
private SubBean subBean;
public void setSubBean(SubBean subBean) {
this.subBean = subBean;
}
public SubBean getSubBean(){
return this.subBean;
}
}
เอาต์พุต
ลองทำตามขั้นตอนต่อไปนี้เพื่อดูว่าโค้ดด้านบนทำงานอย่างไร:
บันทึกรหัสแรกข้างต้นเป็นBeanUtilsDemo.java
ตอนนี้รันโค้ดโดยใช้ตัวเลือก Run หรือ Ctrl + f11 และเอาต์พุตด้านล่างจะปรากฏขึ้น
ลายเซ็นของวิธี PropertyUtils
เมธอดต่อไปนี้จัดเตรียมโดยคลาสPropertyUtilsซึ่งยอมรับการรวมกันของการเข้าถึงคุณสมบัติแบบง่ายดัชนีและแมปโดยพลการเพื่อรับและตั้งค่าคุณสมบัติของ bean ที่ระบุ
PropertyUtils.getProperty (ออบเจ็กต์สตริง)
PropertyUtils.setProperty (Object, String, Object)
พารามิเตอร์:
Object: เป็นถั่วที่มีคุณสมบัติที่จะได้รับหรือแก้ไข
String: เป็นชื่อของคุณสมบัติที่จัดทำดัชนีและ / หรือซ้อนกันที่จะได้รับหรือแก้ไข
ตัวอย่าง
โปรแกรมง่ายๆต่อไปนี้แสดงให้เห็นถึงการใช้เมธอด getProperty และ setProperty:
import org.apache.commons.beanutils.PropertyUtils;
public class PropertyUtilsTest {
public static void main(String args[]){
try{
Tv Color = new Tv();
PropertyUtils.setProperty(Color, "color", "Black");
String value = (String) PropertyUtils.getProperty(Color, "color");
System.out.println("The color value of Tv is: " + value);
}
catch(Exception ex){
ex.printStackTrace();
}
}
public static class Tv{
private String color;
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
}
}
เรียกใช้รหัสตามที่ระบุในตัวอย่างด้านบนและคุณจะได้รับผลลัพธ์ด้านล่าง: