Java-beanutils-standard-javabeans-nested-property-access

提供:Dev Guides
移動先:案内検索

Java BeanUtils-ネストされたプロパティアクセス

説明

「。」を使用してアクセスパスのプロパティ名を連結することにより、Beanのネストされたプロパティの値にアクセスできます。セパレータ。

以下のメソッドを使用して、 Nested プロパティの値を取得および設定できます。

  • PropertyUtils.getNestedProperty(Object、String)
  • PropertyUtils.setNestedProperty(Object、String、Object)

パラメーター:

  • オブジェクト:プロパティを取得または変更するBeanです。
  • 文字列:取得または変更するネストされたプロパティの名前です。

この例では、ネストされたプロパティの値を取得および設定する方法がわかります。 3つのクラスを作成します。 SubBean、Beanの_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;
    }
}

以下のコードとともに、もう1つのクラス_AppLayer1Bean.java_を作成します。

public class AppLayer1Bean {
    private SubBean subBean;

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

出力

上記のコードがどのように機能するかを確認するために、次の手順を実行しましょう。

  • 上記の最初のコードを_BeanUtilsDemo.java_として保存します。
  • [実行]オプションまたはCtrl + f11を使用してコードを実行すると、次のような出力が表示されます。

ネストされたプロパティアクセス

PropertyUtilsメソッドシグネチャ

次のメソッドは、_PropertyUtils_クラスによって提供されます。このクラスは、指定されたBeanのプロパティの値を取得および設定するための、単純なインデックス付きマッピングされたプロパティアクセスの任意の組み合わせを受け入れます。

  • PropertyUtils.getProperty(Object、String)
  • PropertyUtils.setProperty(Object、String、Object)

パラメーター:

  • オブジェクト:プロパティを取得または変更するBeanです。
  • 文字列:取得または変更するインデックス付きまたはネストされたプロパティの名前です。

次の簡単なプログラムは、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;
        }
    }
}

上記の例で指定されたコードを実行すると、以下の出力が得られます。

ネストされたプロパティアクセス