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

Java API中接口命名的标准是什么

国胤
2023-03-14
问题内容

一位同事问我有关ThrowableJava API中的类的问题。

按照标准,我确实理解,每个* able结尾的单词都是java
API中的接口。有一个关于使用诸如接口名称之类的行业标准。因此,我在不知不觉中告诉他有关Java世界中所有异常和错误类型的基本接口。然后,他向我展示了此类的Java文件。

我的问题:

  1. 为什么Java人选择此名称作为类。我认为默认情况下应该是接口?

  2. 这是使用* able单词作为界面的模式吗?

  3. 还有以* able结尾的类的其他示例吗?

问候。


问题答案:

这些“-”名称成为Java中的接口是很常见的,但是我发现没有正式的接口命名约定表明“-”名称应该是接口名称,尽管通常是这样。

可以在此处找到正式的Java命名约定-相当精简,对于类或接口的命名确实没有任何限制:

  • http://www.oracle.com/technetwork/java/codeconventions-135099.html#367

关于您的Throwable问题,詹姆斯·高斯林(James Gosling)曾经回答过为什么它是一类而不是接口,即使名称更适合接口。

不幸的是,Sun / Oracle网站上的原始文章已经消失在Internet上了,所以我只能提供间接归因:

  • http://c2.com/cgi/wiki?JavaExceptionQuestion
  • http://www.ibm.com/developerworks/forums/thread.jspa?threadID=58994&tstart=45
编辑:由于我继续对这个问题持反对意见,所以我通过[Wayback
Machine]( http://www.archive.org/)找到了到Sun讨论的链接, 网址为: http
//web.archive.org/web/20071013225816/http://java.sun.com
/features/2002/03/gosling.html?source=jdc_news&date=20020430

JDC:为什么Throwable不是接口?这种名称暗示应该应该如此。能够捕获类型,例如try {}
catch()之类的东西,而不仅仅是类。这将使Java编程语言更加灵活。

JG:Throwable和其他人不是界面的原因是因为我们决定了,或者我相当早就决定了。 我决定要与抛出的每个异常关联一些状态。
而且您不能使用接口来做到这一点;您只能通过类来做到这一点。
那里的状态基本上是标准的。有消息,有快照,像这样的东西一直都在那儿。并且,如果您将Throwable设置为接口,则要分配诱惑,以使任何旧对象成为Throwable对象。从风格上讲,抛出通用对象可能不是一个好主意,您要抛出的东西实际上应该是旨在成为异常的东西,可以真正捕获异常的性质和发生的事情。他们’



 类似资料:
  • 问题内容: 它是否取决于您使用的平台,还是大多数开发人员建议/遵循的通用约定? 有几种选择: -看起来与javascript代码非常一致。 -看起来更像html5类属性和html中的其他内容。 -看起来与ruby代码非常一致,并且仍然是Javascript中的有效标识符 我在想上面的#1和#3最有意义,因为它们在Javascript中的表现更好。 有正确的答案吗? 问题答案: 没有一个。 由于连字

  • 本文向大家介绍接口测试质量评估标准是什么?相关面试题,主要包含被问及接口测试质量评估标准是什么?时的应答技巧和注意事项,需要的朋友参考一下 接口表现与接口文档的一致性 请求参数:必选和非必选、长度、字符类型、为空、缺失、组合、重复 返回数据:正常和异常

  • 问题内容: 大多数OO语言的接口名称都以大写的I开头,为什么Java不这样做呢?不遵守该公约的理由是什么? 为了说明我的意思,如果我想拥有一个用户界面和一个用户实现,那么在Java中有两种选择: 类=用户,接口= UserInterface 类= UserImpl,接口=用户 在大多数语言中: 类=用户,接口= IUser 现在,你可能会争辩说,你总是可以为用户实现选择一个最具描述性的名称,问题就

  • 问题内容: 当在标记界面中没有什么要实现的东西时,实现它有什么用? 问题答案: 在Java的早期版本中,标记接口是声明有关类的元数据的唯一方法。例如,可序列化标记接口使类的作者可以说他们的类在进行序列化和反序列化时将表现正确。 在现代Java中,标记接口没有位置。它们可以完全由Annotations代替,从而具有非常灵活的元数据功能。如果你具有有关类的信息,并且该信息永不更改,则注释是表示它的非常

  • 标记接口是一个没有任何成员的接口。可序列化就是一个例子。 我们可以定义自己的标记界面吗。如果是,我们如何定义它的功能。?

  • There are only two hard problems in computer science: cache invalidation, naming things, and off-by-one errors. — Phil Karlton 当你维护代码时会发现,选择适当而有意义的信息为你的模块或类命名是有很大帮助的。 尤其是当其他人需要阅读或基于你编写的配置清单工作时,这种命名方法是