【问题标题】:enum.valueOf(String name) missing from Javadoc 1.5 and 1.6Javadoc 1.5 和 1.6 中缺少 enum.valueOf(String name)
【发布时间】:2012-03-21 11:40:25
【问题描述】:

这可能是一个愚蠢的问题,但我使用的方法是enum.valueOf(String name)。那里没有问题,除了当我检查 javadoc 以了解有关此方法的更多信息时,我找不到它。 valueOf(Class<T> enumType, String name) 有 javadoc,但 enum.valueOf(String name) 没有 javadoc(这表明具有此签名的方法不存在 - 但显然存在)。

我在这里遗漏了什么,或者这是 API 的 javadoc 中的疏忽?

谢谢

【问题讨论】:

    标签: java enums javadoc


    【解决方案1】:

    没有方法 Enum.valueOf(String) 但是,每个enum 都有一个由编译器生成的values()valueOf(String) 方法,并且这些都记录在案。它们是静态方法,因此不能在超类或接口中被覆盖或定义。

    Enum e = Enum.valueOf(""); // this doesn't compile
    

    http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.State.html#values%28%29

    http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.State.html#values%28%29

    在 Java 5.0、6 或 7 中也是如此。

    对于 Java 5.0 http://docs.oracle.com/javase/specs/jls/se5.0/html/classes.html#8.9 (archive.org copy)(搜索值) 对于@kapep 提供的Java 7 http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2

    【讨论】:

    • @kapep 感谢您的参考。我找不到 Java 5.0
    • BTW - 当我写 enum.valueOf(String name) 时,我使用“enum”作为实际枚举的快捷方式。在这个具体的例子中,枚举是 SourceMedia 类(来自“Harnessing Hibernate”中的一个练习。)在我看来,这个方法没有出现在 Enum 的 javadoc 中仍然很奇怪。
    • 还有 - 谢谢! (这是我的第一条评论,但它丢失了;-}
    • 它们不在 Enum 中,因为 Enum 没有这些方法,也没有简单的方法来记录它们。它可以添加到类描述中。
    【解决方案2】:

    在后台,enum.valueOf(String name) 实际上是在调用 Enum.valueOf(Class<T> enumType, String name)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 2020-09-05
      • 1970-01-01
      • 2013-12-19
      • 2012-09-04
      • 1970-01-01
      • 2020-11-02
      • 2014-01-23
      相关资源
      最近更新 更多