java - 给定相同类型的对象更新当前对象

标签 java oop

假设我们有以下类:

class Credentials implements ICredentials{
    String name;
    String surname;
    String email;

    public void update(ICredentials updatedCredentials){
            // do stuff here
    }

}

我想使用相同类型的对象来更新当前类的字段(上面的字符串),而不使用 getter 或 setter。有办法吗?

PS:这里是菜鸟。

最佳答案

您可以将要更新的对象传递给更新其内容的 ICredentials 方法:updateParam(Credentials)
在接口(interface)和实现它的 Credentials 中添加此方法可以使用参数的私有(private)字段,因为类的实例可以访问私有(private)字段而无需 getter。

class Credentials implements ICredentials{

    public void update(ICredentials updatedCredentials){
         updatedCredentials.updateParam(this);
    }

    @Override
    public void updateParam(Credentials credentialsToUpdate){
         credentialsToUpdate.name= name;
         credentialsToUpdate.surname = surname;
         credentialsToUpdate.email= email;
    }
}

但这已经够复杂的了。
实际逻辑中的真正问题是您希望将 ICredentials 作为参数传递,而不必是 Credentials。在这些情况下,接口(interface)需要提供一种方法来提取姓名和电子邮件信息。
您不必严格将这些方法视为 getters,而是将其视为履行接口(interface)契约所需的方法。
没有它,要从接口(interface)中提取数据,您应该做一些复杂的事情或从接口(interface)向下转换到子类,或者更糟......

关于java - 给定相同类型的对象更新当前对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51499456/

相关文章:

javascript - OOP -executeSql 将结果返回到 var 中,它显示未定义

oop - 从具有 Id 的数据库中获取对象时,是否使用 Option 作为结果?

管道脚本中的 java.io.NotSerializedException 错误

java - 使用 Initcomponents() 中的函数

java - Hibernate - 自定义插入数据库

c# - `class` 关键字和用户定义的数据类型

javascript - 简单的 JavaScript slider - 需要一些 OOP 帮助才能使其工作

java - return 语句应该在 Java 中使用泛型吗?

java - 在 robotsium 脚本中使用 Rosource Id 单击按钮

java - 在 Android 应用程序中释放共享资源