Copiare due classi diverse ma con gli stessi campi tramite la reflection
Bean
A.java
import java.lang.reflect.Field;
public class A {
private String name;
private long punteggio;
public long getPunteggio() {
return punteggio;
}
public void setPunteggio(long punteggio) {
this.punteggio = punteggio;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class B {
private String name;
private long punteggio;
public long getPunteggio() {
return punteggio;
}
public void setPunteggio(long punteggio) {
this.punteggio = punteggio;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void copy(Object obj) {
try {
Method[] methods = obj.getClass().getMethods();
for (int i = 0; i < methods.length; i++) {
String methodName = methods[i].getName();
try{
if(methodName.startsWith(“get”)){
this.getClass().getMethod(methodName.replaceFirst(“get”, “set”) , methods[i].getReturnType() ).invoke(this, methods[i].invoke(obj, null));
}else if(methodName.startsWith(“is”) ){
this.getClass().getMethod(methodName.replaceFirst(“is”, “set”) , methods[i].getReturnType() ).invoke(this, methods[i].invoke(obj, null));
}
}catch (NoSuchMethodException e) {
// TODO: handle exception
}catch (IllegalArgumentException e) {
// TODO: handle exception
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Classe per il test: