当前位置: 首页 > article >正文

对鸿蒙 中 对象的理解

鸿蒙中的对象概述

1. 对象的基本概念

在鸿蒙开发里,对象是类的实例。类是一种用户自定义的数据类型,它定义了对象的属性(数据)和方法(行为)。当创建一个类的实例时,就得到了一个对象。例如,在 Java 语言编写的鸿蒙应用中,你可以定义一个 Person 类,然后创建 Person 类的对象。

收起

java

// 定义一个 Person 类
class Person {
    private String name;
    private int age;

    // 构造方法
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter 和 Setter 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

// 创建 Person 类的对象
Person person = new Person("Alice", 25);
2. 对象在鸿蒙开发中的应用场景

  • 界面开发:在鸿蒙的 UI 开发中,很多组件都是对象,如 TextButton 等。你可以通过创建这些组件的对象,并设置它们的属性和添加事件监听器来构建用户界面。

收起

java

// 创建一个 Text 组件对象
Text text = new Text(getContext());
text.setText("Hello, HarmonyOS!");

  • 数据处理:在处理数据时,常常会将数据封装到对象中,方便进行管理和操作。例如,将从数据库中查询到的数据封装到对应的实体类对象中。

对比两个对象是否相等的方法

1. 使用 == 运算符

在 Java 中,== 运算符用于比较两个对象的引用是否相等,即判断两个对象是否指向同一个内存地址。

收起

java

Person person1 = new Person("Alice", 25);
Person person2 = person1;
Person person3 = new Person("Alice", 25);

// 使用 == 运算符比较
boolean isSameReference1 = person1 == person2; // true,因为指向同一个内存地址
boolean isSameReference2 = person1 == person3; // false,因为指向不同的内存地址
在实际的开发中 

比如说  两个不同的接口   返回的对象是一样的    但是 你对比的时候 他们是不相等的  原因就是 他们的内存地址不一样

还比如   我们使用

forEach 循环一个数组的时候  将数组的对象  传递给一个组件的时候  在组建中接收   然后用原来的数据  去对比 时候数组中存在某一个对象的是时候   是不行的       原因也是 对象传递给组件的时候   

内存地址变化了     这个时候可以通过 对象的  某一唯一属性去对比

2. 重写 equals() 方法

equals() 方法在 Object 类中定义,默认情况下,它的实现和 == 运算符一样,比较的是对象的引用。但我们可以在自定义类中重写 equals() 方法,使其根据对象的属性值来判断两个对象是否相等。

收起

java

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 重写 equals 方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person other = (Person) obj;
        return age == other.age && (name == null ? other.name == null : name.equals(other.name));
    }
}

Person person1 = new Person("Alice", 25);
Person person2 = new Person("Alice", 25);

// 使用重写后的 equals 方法比较
boolean isEqual = person1.equals(person2); // true,因为属性值相同
3. 使用第三方库(如 Apache Commons Lang)

在一些复杂的场景中,手动编写 equals() 方法可能会比较繁琐,这时可以使用第三方库来简化操作。例如,Apache Commons Lang 库提供了 EqualsBuilder 类,可以方便地比较两个对象的属性值。

收起

java

import org.apache.commons.lang3.builder.EqualsBuilder;

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 使用 EqualsBuilder 重写 equals 方法
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (obj == this) {
            return true;
        }
        if (obj.getClass() != getClass()) {
            return false;
        }
        Person other = (Person) obj;
        return new EqualsBuilder()
              .append(name, other.name)
              .append(age, other.age)
              .isEquals();
    }
}

总结

在鸿蒙开发中,对象是类的实例,广泛应用于界面开发和数据处理等场景。对比两个对象是否相等时,== 运算符比较的是对象的引用,而重写 equals() 方法或使用第三方库可以根据对象的属性值来进行比较。


http://www.kler.cn/a/560842.html

相关文章:

  • SQL注入实战指南:sqli-labs全关卡通关详解与技巧总结
  • [java基础-JVM篇]1_JVM自动内存管理
  • js中的await与async的使用
  • 永洪科技旗下BI产品,成功入选“金融信创优秀解决方案“
  • redis添加密码
  • JavaAPI(lambda表达式、流式编程)
  • 4-知识图谱的抽取与构建-4_2实体识别与分类
  • CSS实现图片缺角效果
  • 如何查找 UBuntu的 arm版本
  • 大数据AI一体化开发再加速:DataWorks 支持GPU类型资源
  • 基于Springboot医院预约挂号小程序系统【附源码】
  • 2025:人工智能重构人类文明的新纪元
  • 插入排序:一种简单而直观的排序算法
  • 15.2 智能销售顾问系统技术架构解密:构建企业级知识驱动型对话引擎
  • 应对LLM应用中的AI幻觉,如何通过Token对数概率预测LLM的可靠性
  • 【无标题】docker-compose ps 和dokcer ps的区别
  • 23. AI-大语言模型-DeepSeek简介
  • 毕业项目推荐:基于yolov8/yolov5/yolo11的非机动车头盔佩戴检测识别系统(python+卷积神经网络)
  • 网络应用层之HTTP
  • Android Audio实战——音频相关基础概念(附)