[RESOLVIDO] Copiar atributos de um Objeto para Outro

Bom galera,

eu preciso copiar os atributos de um objeto para outro, vou demonstrar como quero.

class A {

String a;

}

class B {

String a;

String b;
}

Copiar os atributos da classe B para a classe A, certo, posso perder o atributo b, não tem problema é isso que quero.

Não posso fazer assim pois tenho bastante classes e seria bem trabalhoso.

A a = new A();
B b = new B();

a.setA(b.getA());

Fico no aguardo.

Obrigado desde já.

xD~~

procure por Apache BeanUtils

Faz por reflection. Vc consegue uma solução boa por ele.

É, com reflection dá pra fazer de boa mesmo. Eu fiz um pedaço, saca só:

package tests.java.reflection;

import java.lang.reflect.Field;

public class ReflectionUtil {

	public static Object copyAttributesFromTo(Object a, Object b) throws IllegalArgumentException, IllegalAccessException {
		Field[] fieldsFromFirstClass = a.getClass().getDeclaredFields();
		Field[] fieldsFromSecondClass = b.getClass().getDeclaredFields();

		for (Field currentFieldFromTheFirstClass : fieldsFromFirstClass) {
			for (Field currentFieldFromTheSecondClass : fieldsFromSecondClass) {
				String nameOfTheFirstField = currentFieldFromTheFirstClass.getName();
				String nameOfTheSecondField = currentFieldFromTheSecondClass.getName();

				if (nameOfTheFirstField.equals(nameOfTheSecondField)) {
					currentFieldFromTheFirstClass.setAccessible(true);
					currentFieldFromTheSecondClass.setAccessible(true);

					currentFieldFromTheFirstClass.set(a, currentFieldFromTheSecondClass.get(b));
				}
			}
		}

		return a;
	}

	public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
		A a = new A();
		a.setFirst("1st");

		B b = new B();
		b.setFirst("first");
		b.setSecond("second");

		A newA = (A) ReflectionUtil.copyAttributesFromTo(a, b);

		System.out.println("should be first: " + newA.getFirst());
	}
}

Desconsidere a OO nesse caso.

Andre Brito

Valeuu Pelo codigo!!

xD~~

[quote=altitdb]Andre Brito

Valeuu Pelo codigo!!

xD~~[/quote]
Cara, não se esqueça que é só um exemplo… Tem que melhorar muito o código.

[quote=Andre Brito][quote=altitdb]Andre Brito

Valeuu Pelo codigo!!

xD~~[/quote]
Cara, não se esqueça que é só um exemplo… Tem que melhorar muito o código.[/quote]

Pode deixar…

Foi bom que eu estudei um pouco sobre Reflection!

xD~~