[Flutter] 심화 버전 - 객체 동등성 재정의

2024. 11. 22. 17:29·Flutter/심화 버전

객체 비교와 객체 동등성 재정의

  • Dart에서는 기본적으로 객체를 비교할 때 주소 값으로 비교 처리를 합니다.
  • flutter에서 동일한 위젯을 재사용할 수 있다면 이미 만들어진 객체를 재사용하여 메모리 낭비를 줄일 수 있습니다.
  • 객체 동등성 재정의 : 메서드를 재정의하여 객체를 비교할 때 논리적 동등성(내용 기반 비교)을 구현하는 것을 의미합니다.

hashCode, operator를 재정의 해야 합니다.

void main(){
  // 객체 비교와 객체 동등성 재정의
  // Dart 에서는 기본적으로 객체를 비교할 때 주소값으로 비교 처리
  // 플러터에서 동일한 위젯을 재사용할 수 있다면 이미 만들어진 객체를
  // 재사용하여 메모리 낭비를 줄일 수 있다.

  // const Container(), const Container(),

  var a = Object();
  var b = Object();
  // identical(a, b) 함수는 객체가 도일한 메모리를 참조하지 판별하는 기능 입니다.
  bool result = identical(a, b);
  print(result);

  print('----------------------');
  print(Book('다트') == Book('다트')); // <-- 논리적으로 같은 객체라고 판별하고 싶다면 동등성 재정의가 필요


}

class Book{
  String title;
  Book(this.title);

  // hashCode, operator 를 재정의 해야 한다.
  @override
  bool operator ==(Object other) {
    // 새로운 함수 확인 : identical() 함수는 두 객체를 메모리상에 동일한 주소인지 비교
    return identical(this, other)
    || other is Book
            && this.runtimeType == other.runtimeType
            && this.title == other.title;
  }

  // 인스턴스 객체를 고유한 정수 값으로 변경 처리
  @override
  int get hashCode => title.hashCode;

}

실행 결과_______

 

'Flutter > 심화 버전' 카테고리의 다른 글

[Flutter] 심화 버전 - 해시 함수  (0) 2024.11.22
[Flutter] 심화 버전 - 가변 객체 -> 불변 객체  (0) 2024.11.22
[Flutter] 심화 버전 - 불변 객체  (0) 2024.11.22
[Flutter] 심화 버전 - 가변 객체  (0) 2024.11.22
[Flutter] 심화 버전 - 객체  (0) 2024.11.22
'Flutter/심화 버전' 카테고리의 다른 글
  • [Flutter] 심화 버전 - 해시 함수
  • [Flutter] 심화 버전 - 가변 객체 -> 불변 객체
  • [Flutter] 심화 버전 - 불변 객체
  • [Flutter] 심화 버전 - 가변 객체
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[Flutter] 심화 버전 - 객체 동등성 재정의
상단으로

티스토리툴바