は、私のようなクラスを持っている同様のパラメータを持つ別にクラスを変換します私はY.(すべてのparamはマッピングを持っている)
012の新しいオブジェクトへのインスタンスをコピーしたいClassB/ClassY {
String b;
}
:のように、ClassBのと同じです
私は同様のマッピングを行うDozerに出くわしましたが、その値がプリミティブである場合でした。クラスをどのようにマッピングするのか理解できませんでした。 javaでこれをやろうとしています。
答えはhttps://stackoverflow.com/a/36196948/2733350でしたが、DozerでMapperFactoryが見つかりませんでした。私はこれが役に立てば幸いhttps://github.com/johanwitters/stackoverflow-copyProperties
package com.johanw.stackoverflow.copy;
public class ClassB {
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
String b;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof ClassB) && !(o instanceof ClassY)) return false;
if (o instanceof ClassB) {
ClassB classB = (ClassB) o;
return b != null ? b.equals(classB.b) : classB.b == null;
} else {
ClassY classY = (ClassY) o;
return b != null ? b.equals(classY.b) : classY.b == null;
}
}
}
package com.johanw.stackoverflow.copy;
public class ClassY {
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
String b;
}
package com.johanw.stackoverflow.copy;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Assert;
import org.junit.Test;
import java.lang.reflect.InvocationTargetException;
public class TestCopy {
@Test
public void test() {
ClassB b = new ClassB();
b.b = "Hallo";
ClassY y = new ClassY();
try {
Assert.assertFalse(b.equals(y));
BeanUtils.copyProperties(b, y);
Assert.assertTrue(b.equals(y));
} catch (IllegalAccessException e) {
Assert.fail(e.toString());
e.printStackTrace();
} catch (InvocationTargetException e) {
Assert.fail(e.toString());
e.printStackTrace();
}
}
}
から
copyProperties(オブジェクト、Object)を利用できる
コード例:Apacheのコモンズから
はあなたの唯一のオプションですか?または 'mapstruct'のような何か類似した作業をしていますか? – sfat
いずれかに開きます。私はこれを試してみます – Destructor
あなたの問題に対する解決策を見つけられたらうれしいです。ただし、実際の回答/解決策は、あなたの質問に編集してはいけません**。一般的には、質問*を明確にするために質問を編集するべきですが、質問内に答えを入れることはできません。問題を解決するために使用したコードを使用して独自の回答を作成し、それを受け入れる必要があります(システムでは、自分の回答を受け取る前に48時間の遅延が必要な場合があります)。自分で問題を解決したら、[自分の質問に答えることが奨励されます](// stackoverflow.com/help/self-answer)。 – Makyen