java - 如何在 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 或更高版本。
解决方案
我不能很好地理解这个问题,但你应该同时设置吗?将它们定义为接口实例并赋予它们新的值;
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
}
}
推荐阅读
- c - 避免在两个屏幕之间打开窗口
- python - pandas.dataframe 等效于 Pandas.read_csv 转换器?
- android-studio - 始终使文本输入布局中的前缀文本像提示一样可见
- plsql - REPLACE 在 plsql 过程中不起作用
- javascript - 单选按钮答案出现在
- omnet++ - 我们使用哪些工具在 VANEt 中实现 Sybil 攻击模拟
- wordpress - 如何通过从另一个页面单击按钮将预制文本添加到表单?WordPress 元素
- javascript - MediaDevices.enumerateDevices() 通过文件协议访问时没有显示所有媒体设备?
- .net-5 - 字符串插值不适用于某些 url
- javascript - 如何将 EventListener 应用于数组的每个元素?