> Java > java지도 시간 > Java에서 두 객체 필드 값을 비교하여 동일한지 확인하는 방법

Java에서 두 객체 필드 값을 비교하여 동일한지 확인하는 방법

PHPz
풀어 주다: 2023-04-28 22:43:09
앞으로
2041명이 탐색했습니다.

도구

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

package com.shucha.deveiface.biz.utils;

  

/**

 * @author tqf

 * @Description

 * @Version 1.0

 * @since 2022-03-21 16:50

 */

  

import com.shucha.deveiface.biz.model.Comparison;

  

import java.lang.reflect.Field;

import java.util.ArrayList;

import java.util.List;

  

public class CompareObjUtil {

  

    public static List<Comparison> compareObj(Object beforeObj, Object afterObj) throws Exception{

        List<Comparison> diffs = new ArrayList<>();

  

        if(beforeObj == null) {

            throw new RuntimeException("原对象不能为空");

        }

        if(afterObj == null) {

            throw new RuntimeException("新对象不能为空");

        }

        if(!beforeObj.getClass().isAssignableFrom(afterObj.getClass())){

            throw new RuntimeException("两个对象不相同,无法比较");

        }

  

        //取出属性

        Field[] beforeFields = beforeObj.getClass().getDeclaredFields();

        Field[] afterFields = afterObj.getClass().getDeclaredFields();

        Field.setAccessible(beforeFields, true);

        Field.setAccessible(afterFields, true);

  

        //遍历取出差异值

        if(beforeFields != null && beforeFields.length > 0){

            for(int i=0; i<beforeFields.length; i++){

                Object beforeValue = beforeFields[i].get(beforeObj);

                Object afterValue = afterFields[i].get(afterObj);

                if((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)){

                    Comparison comparison = new Comparison();

                    comparison.setField(beforeFields[i].getName());

                    comparison.setBefore(beforeValue);

                    comparison.setAfter(afterValue);

                    comparison.setIsUpdate(true);

                    diffs.add(comparison);

                }

            }

        }

  

        return diffs;

    }

}

 public static void main(String[] args) throws Exception {

        ApIData apIData = new ApIData()

                .setName("张三")

                .setMonth("5")

                .setHh("1");

        ApIData apIData1 = new ApIData()

                .setName("张三")

                .setMonth("9")

                .setHh("35");

        List<Comparison> list = CompareObjUtil.compareObj(apIData, apIData1);

        System.out.println(list);

    }

로그인 후 복사
rrree

위 내용은 Java에서 두 객체 필드 값을 비교하여 동일한지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿