gpt4 book ai didi

java - 当并非所有函数都是多态时

转载 作者:行者123 更新时间:2023-11-30 03:58:54 24 4
gpt4 key购买 nike

来自没有解决方案的旧考试:

鉴于此代码....

import java.util.*;

public class AClass {
private int f(List<Integer> list){
int i = 0;
//Something useful
return i;
}
public int g() {
List<Integer> myList = new LinkedList<Integer>();
return f(myList);
}
}

请注意该方法f是多态的,即它可以传递接口(interface) List 的任何实现。另一方面,方法g不是。当它构造对象时 myList ,如果不知道其类型,它就无法执行此操作。因此,它不能是多态的。我们的代码包含许多遇到同样问题的方法。我们的目标是使我们的代码具有多态性。

  1. 此问题的标准解决方案的名称是什么?
  2. 描述一下这个例子

最佳答案

  1. 松散耦合解决该问题的方法有很多:对接口(interface)进行编程并应用 Dependency Injection

  2. 方法g()LinkedList 紧密耦合,因为该方法显式实例化该对象,因此与该类紧密结合。例如,如果您想使用 ArrayList,则需要打开该类并显式修改该方法,这可能会引入错误。此外,您可能需要重新测试和记录。另一方面,方法 f() 更加灵活,因为您可以只传递所需的集合,并且该方法不知道您传递的具体实现,从而保持方法的关闭。

关于java - 当并非所有函数都是多态时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22409031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com