先定义一个实体类Fruit
package reflection;
public class Fruit {
private String name;
private Integer price;
private String branch;
private Integer count;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}
使用反射比较两个不同对象的属性值是否相同
package reflection;
import java.lang.reflect.Field;
import java.util.Objects;
public class Test {
public boolean compareFruit(Fruit apple){
Fruit pear=new Fruit();
pear.setName("pear");
pear.setPrice(111);
pear.setBranch("big pear");
pear.setCount(21);
Class appleClss=apple.getClass();
Field[] appleFields=appleClss.getDeclaredFields();
for (Field f:appleFields) {
try{
f.setAccessible(true);
// System.out.println("field:"+f.getName()+";apple value:"+f.get(apple)+";pear value:"+f.get(pear));
if(!Objects.equals(f.get(apple),f.get(pear))){
return false;
}
}catch (Exception e){
e.printStackTrace();
return false;
}
}
return true;
}
public Fruit factory(){
Fruit apple=new Fruit();
apple.setName("apple");
apple.setPrice(10);
apple.setBranch("big apple");
apple.setCount(20);
return apple;
}
public static void main(String[] args) {
Test test=new Test();
Fruit apple=test.factory();
System.out.println(test.compareFruit(apple));
}
}