Java:“尚未实现”的通用注释

时间:2012-04-02 21:49:09

标签: java annotations

Java中是否有一个通用或标准的注释用于定义尚未实现的方法?

因此,例如,如果我使用包含类似

之类的库的pre-alpha版本
@NotImplementedYet
public void awesomeMethodThatTotallyDoesExactlyWhatYouNeed(){ /* TODO */ }

尝试拨打awesomeMethodThatTotallyDoesExactlyWhatYouNeed时,我会收到编译时警告?

4 个答案:

答案 0 :(得分:16)

您可能希望在运行测试时使用UnsupportedOperationException并检测尚未实现的调用方法。

答案 1 :(得分:2)

您可以创建自己的注释。使用运行时保留策略,您可以配置目标构建,以便在必要时查找此批注。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({
    ElementType.ANNOTATION_TYPE, 
    ElementType.METHOD, 
    ElementType.CONSTRUCTOR,
    ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Unimplemented {

    boolean value() default true;
}

答案 2 :(得分:1)

Google 图书馆使用可能会更改的@Beta注释,但这些方法已实施

答案 3 :(得分:1)

不,没有针对尚未实现的方法的标准注释。

但是,JDK中有一个更通用的注释,用于标记不鼓励开发人员使用的API,并且Java编译器本身在使用时会发出警告。我说的是@Deprecated,许多开发人员仅将其视为“宣布删除”。但是,JDK文档中的相关文章(例如Java 7Java 9)列出了几个示例用例,其中只有一个涉及删除:

  
      
  • API很危险(例如Thread.stop方法)。

  •   
  • 有一个简单的重命名(例如,将AWT Component.show/hide替换为setVisible)。

  •   
  • 可以使用更新更好的API。

  •   
  • 已弃用的API将被删除。

  •   

我认为您的案件“尚未实施”肯定会朝着相同的方向发展。此外,如果该方法始终为throw a NotYetImplementedException,则它甚至适合示例“ API危险”。

因此,您需要做的是以下事情:

  1. @Deprecated添加到方法中
  2. 添加@deprecated Javadoc来说明背景
  3. 配置构建以使用-Xlint:deprecation调用编译器,以便它发出警告。