Java BeanUtils - Yuvalanmış Mülk Erişimi

Açıklama

"" Kullanarak erişim yolunun özellik adlarını birleştirerek çekirdeğin iç içe geçmiş özelliğinin değerine erişebilirsiniz. ayırıcılar.

Değerlerini alabilir ve ayarlayabilirsiniz. Nested aşağıdaki yöntemleri kullanarak mülk:

  • PropertyUtils.getNestedProperty (Nesne, Dize)

  • PropertyUtils.setNestedProperty (Nesne, Dize, Nesne)

Parametreler:

  • Object: Mülkiyeti alınacak veya değiştirilecek fasulyedir.

  • String: Elde edilecek veya değiştirilecek iç içe geçmiş özelliğin adıdır.

Misal

Bu örnekte, yuvalanmış mülkün değerlerini nasıl alacağınızı ve ayarlayacağınızı göreceksiniz. Üç sınıf oluşturacağız; SubBean , AppLayer1Bean for fasulyeleri ve BeanUtilsDemo'yu çalıştırmak için ana program olarak.

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);
        }
    }
}

Şimdi aşağıda gösterildiği gibi SubBean.java adlı başka bir sınıf oluşturacağız :

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; 
    }
}

Aşağıdaki kodla birlikte bir sınıf daha AppLayer1Bean.java oluşturun :

public class AppLayer1Bean {
    private SubBean subBean;

    public void setSubBean(SubBean subBean) {
        this.subBean = subBean;
    }
    public SubBean getSubBean(){
        return this.subBean;
    }	
}

Çıktı

Yukarıdaki kodun nasıl çalıştığını görmek için aşağıdaki adımları uygulayalım:

  • Yukarıdaki ilk kodu BeanUtilsDemo.java olarak kaydedin .

  • Şimdi kodu Çalıştır seçeneğini veya Ctrl + f11 kullanarak yürütün ve aşağıdaki gibi çıktı alın.

PropertyUtils Yöntem İmzalar

Aşağıdaki yöntemler , belirtilen çekirdeğin özelliğinin değerini almak ve ayarlamak için basit, dizinlenmiş ve eşlenmiş özellik erişiminin herhangi bir rastgele kombinasyonunu kabul eden PropertyUtils sınıfı tarafından sağlanır .

  • PropertyUtils.getProperty (Nesne, Dize)

  • PropertyUtils.setProperty (Nesne, Dize, Nesne)

Parametreler:

  • Object: Mülkiyeti alınacak veya değiştirilecek fasulyedir.

  • String: Elde edilecek veya değiştirilecek dizine alınmış ve / veya iç içe yerleştirilmiş özelliğin adıdır.

Misal

Aşağıdaki basit program getProperty ve setProperty yöntemlerinin kullanımını gösterir:

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;
        }
    }
}

Kodu yukarıdaki örnekte belirtildiği gibi çalıştırın ve aşağıdaki çıktıyı elde edersiniz: