假设我们有以下类:
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/