当前位置: 首页 > 面试题库 >

为什么应该首选Java类的接口?

岑元徽
2023-03-14
问题内容
ArrayList<Object> list = new ArrayList<Object>();

违反情况是“避免使用类似’ArrayList’的实现类型;而应使用接口”。

以下行将纠正违规:

List<Object> list = new ArrayList<Object>();

为什么要用后者List代替ArrayList?


问题答案:

在具体类型上使用接口是实现良好封装和松散耦合代码的关键。

在编写自己的API时遵循这种做法甚至是个好主意。如果这样做,以后您会发现,将单元测试添加到代码中(使用Mocking技术),并在将来需要时更改基础实现会更容易。



 类似资料:
  • 问题内容: 更新数据库时我更喜欢什么?哪种方法的优缺点是什么,什么时候应该使用另一种方法? 问题答案: 在第一个示例中,对数据的更改在遇到刷新后会反映在数据库中,但仍在事务中。 但是在第二个示例中,您将立即提交事务。因此,对数据库所做的更改以及事务也在那里结束。 有时,刷新可能有助于将数据保留在正在进行的事务之间,然后最终提交更改。因此,如果以后发生某些问题,例如批量插入/更新,您也可以回滚以前的

  • 问题内容: 当我们在Java中使用系统定义的异常类时,为什么需要制作用户定义的异常类?因为我的老师告诉我在项目中进行Exception类。 任何详尽的例子都是好的。 问题答案: 用户定义的异常可能更具描述性。 范例: 创建自己的异常的替代方法是使用预定义的异常(例如),但这会给捕获该异常的方法提供较少的信息(因为它可以被许多类中的许多方法抛出)。 定义异常的类层次结构可在处理异常时为您的类用户提供

  • 问题内容: 一个理想的例子是什么时候确切地使用Java中的特定接口,以及适用的任何特定规则。 问题答案: 集合框架是一个不错的选择。 因此,你可以编写如下代码: 如果将来你想使用say 或自己的界面更改实现,那么你要做的就是将第一行更改为: 其余代码将继续进行。

  • 问题内容: 我在这里阅读Threadlocal的JavaDoc https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ThreadLocal.html 它说:“ ThreadLocal实例通常是希望将状态与线程关联的类中的私有静态字段(例如,用户ID或事务ID)。” 但是我的问题是,为什么他们选择使其静态化(通常)-使其具有“每个线程”状态

  • 问题内容: 我正在从事一个涉及解析HTML的项目。 搜索后,我发现了两个可能的选项:BeautifulSoup和lxml.html 有什么理由比另一个更喜欢吗?一段时间以前,我已经将lxml用于XML,但我觉得我会更满意,但是BeautifulSoup似乎很常见。 我知道我应该使用对我有用的产品,但是我一直在寻找两者的亲身经历。 问题答案: 简单的答案imo是,如果您相信源代码格式正确,请使用lx

  • 我知道这是一个很基本的问题,但一个面试官用一种很诡计的方式问我,我很无奈:( 我只知道一个界面的材料或理论定义,并在我工作的许多项目中实现了它。但我真的不明白这为什么有用,怎么有用。 接口方面有一点我也不懂。例如,我们使用 finally块中的。但我没有看到该类实现或继承接口()类,我的意思是。我想知道怎么才能直接调用方法名。同样,我不理解Dispose方法是如何工作的,因为我们需要用我们自己的实