0

オブジェクトをプレーンテキストファイルにエクスポートできるように、独自の Bean utils コンバーターを作成しようとしています。

私はメインクラスを持っています

 public class BeanUtilsTest {
    public static void main(String[] args) {
        try{
        MyObject myObject = new MyObject();
        myObject.setId(3l);
        myObject.setName("My Name");

        ConvertUtilsBean cub = new ConvertUtilsBean();
        cub.deregister(String.class);
        cub.register(new MyStringConverter(), String.class);
        cub.deregister(Long.class);
        cub.register(new MyLongConverter(), Long.class);

        System.out.println(cub.lookup(String.class));
        System.out.println(cub.lookup(Long.class));

        BeanUtilsBean bub = new BeanUtilsBean(cub, new PropertyUtilsBean());

        String name = bub.getProperty(myObject, "name");
        System.out.println(name);
        String id = bub.getProperty(myObject, "id");
        System.out.println(id);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

ロングコンバーター

public class MyLongConverter implements Converter{

    @Override
    public Object convert(Class clazz, Object value) {
        System.out.println("Long convert");
        return value.toString()+"l";
    }

}

文字列コンバーター

public class MyStringConverter implements Converter{

    @Override
    public Object convert(Class clazz, Object value) {
        System.out.println("String convert");
        return value.toString()+":";
    }
}

最後に私のオブジェクト

public class MyObject {
    Long id; 
    String name;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

出力

String convert
My Name:
String convert
3:

ID が MyLongConverter を通過することを期待していましたが、まだ String を通過しているようです。なぜ、どうすればこれを修正できますか?

アドバイスしてくださいありがとう

4

1 に答える 1

0
String id = bub.getProperty(myObject, "id");

上記のクラスのgetProperty関数は、プロパティが定義されている形式に関係なく、要求したプロパティの表現を返す必要があります。したがって、常にコンバーター ( ) を使用します。BeanUtilBeanStringStringMyStringConverter

ここでの宛先タイプは常にStringであるため、MyLongConverter使用されることはありません。

代わりにMyStringConverter、値パラメーターの型を検査し、それに応じて に変換する必要がありStringます。

于 2012-07-17T20:24:11.007 に答える