首页 > 解决方案 > 如何在 JAVA 中为两个不同的对象实现一个 setter?

问题描述

好的,伙计们,只是总结一下我昨天的经历,我必须对你们完全诚实。我有一个通用技术部分的工作面试。在那次工作面试中,我有多达 10 分钟的时间来重构一些代码,以提高可读性并使其不那么复杂。但是!,我陷入了二传手的角色。只是把它放在桌子上:我们有两个对象从一个实现接口的类实例化。

public class test{
  private MyClass obj1 = new MyClass();
  private MyClass obj2 = new MyClass();

  public void setGenericMyClass(IMyClass myClass) {
    //insert code here to set obj1 or obj2 in the same method
 } 
}

我怎样才能实现它?在笔试中(是的,用笔)我可以使用 Java 8 或更高版本。

标签: java

解决方案


我不能很好地理解这个问题,但你应该同时设置吗?将它们定义为接口实例并赋予它们新的值;

public class test{
  private IMyClass obj1 = new MyClass(); //Use interface here
  private IMyClass obj2 = new MyClass(); //Use interface here

  public void setGenericMyClass(IMyClass myClass) {
     obj1=myClass;
     obj2=myClass;
 } 
}

既然有评论为什么需要存储对同一个对象的两个引用,我将举一个例子。实际上在实践中它发生了很多。您需要两个对象并使用它们。如果您班级的用户想要将相同的实例传递给您,那么他可能有他的理由。这是办公室的示例代码,您不想复制办公室机器,因此您有两个对象:

class Office {
  private IPrinter printer;
  private IScanner scanner;

  public void setPrinter(IPrinter printer) {..}
  public void setScanner(IScanner scanner) {..}

  void print() { printer.print(); }
  void scan() { scanner.scan(); }

  public void setBigOfficeMachine(IOfficeMachine machine){
    printer=machine;  //IOfficeMachine is an IPrinter
    scanner=machine;  //IOfficeMachine is an IScanner
  }


}

推荐阅读