객체 비교 속성
1899 단어 대상
해결 방향: JAVA 반사 메커니즘을 이용하여 두 대상을 비교하고 서로 다른 속성 값이 있으면 이 속성 값을'1@'+value로 바꾸고 그렇지 않으면'0@'+value로 바꾸고 페이지에서 판단하고 표시를 캡처한다.
public static Object CompareObj(Object obj1, Object obj2) {
// obj1
Class obj1Class = obj1.getClass();
Method[] obj1methods = obj1Class.getDeclaredMethods();
// obj2
Class obj2Class = obj2.getClass();
Method[] obj2methods = obj2Class.getDeclaredMethods();
// obj2 MAP ,
Map obj2MeMap = new HashMap();
for (int i = 0; i < obj2methods.length; i++) {
Method method = obj2methods[i];
obj2MeMap.put(method.getName(), method);
}
for (int i = 0; i < obj1methods.length; i++) {
String methodName = obj1methods[i].getName();
if (methodName != null && methodName.startsWith("get")) {
// FIELD
try {
// obj1 getXXXX
Object returnObj = obj1methods[i].invoke(obj1, new Object[0]);
Object returnObj2 = obj1methods[i].invoke(obj2, new Object[0]);
// obj2
Method obj2method = (Method) obj2MeMap.get("set" + methodName.split("get")[1]);
// obj2 setXXX
if (returnObj2 != null) {
if (returnObj == null) {
obj2method.invoke(obj2, "0@" + returnObj2);
} else {
if (returnObj.equals(returnObj2)) {
obj2method.invoke(obj2, "0@" + returnObj2);
} else {
obj2method.invoke(obj2, "1@" + returnObj2);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
return obj2;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
List 컬렉션 객체에서 서로 다른 속성 크기로 정렬된 인스턴스인스턴스는 다음과 같습니다. 테스트: 출력 결과는 다음과 같습니다. 두 번째 방법은 컬렉션에 따라.sort 재부팅 방법(예: 마스터 클래스에서 이렇게 작성하면 됩니다. 출력 결과는 다음과 같습니다. 전자의 코드 구조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.