2 回答

TA贡献1111条经验 获得超0个赞
对于Java 1.6 +(不确定1.5),您可以使用自己的自定义注释,这里有一个您可以使用的功能模板:
package com.mycompany.annotations;
import java.lang.annotation.*;
/**
*
* This element has an experimental maturity. Use with caution.
*
*
* NOTE: The developers of this element is not responsible for the issues created,
* using it is not suggested for production environment. If you see this annotation do this, do not do that etc
* Enjoy responsibly....
*/
@Documented //this annotation maybe helpful for your custom annotation
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER,
ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE, ElementType.PACKAGE,
ElementType.ANNOTATION_TYPE, ElementType.TYPE_USE, ElementType.TYPE_PARAMETER
})
public @interface Experimental {}
这里是 的源代码,所以大家可能都不想使用元素ElementTypeElementType.TYPE_USE, ElementType.TYPE_PARAMETER
/*
....
* @since 1.5
* @jls 9.6.4.1 @Target
* @jls 4.1 The Kinds of Types and Values
*/
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}
顺便说一句,这是我从我的IntelliJ中看到的,当我搜索可能实现的库时,可能已经实现了实验
有一个用Java 9定义的注释。但请注意,它是在Oracle JDK中,而不是OpenJDK中。在撰写本文时,您需要从官方网站安装jdk-11才能查看/使用它。我不会把它用于这个目的,因为斯蒂芬C.列出的事实。Experimental
无论如何,您都不能将其用于方法。因为它的源代码是
...
package jdk.jfr;
/*
...
*
* @since 9
*/
@MetadataDefinition
@Label("Experimental")
@Description("Element is not to be shown to a user by default")
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.TYPE })
public @interface Experimental {
}

TA贡献1811条经验 获得超6个赞
您最好要么实现自己的注释,要么找到合适的第三方等效项...具有适当的范围。
在 JDK 9+ 中有一个名为 .然而:jdk.jfr.Experimental
在 Java 9 之前,它不包括在内。
它可能只存在于支持Java Flight Recorder的Oracle Java实现中。
注释的 javadoc 意味着它具有 JFR 特定的含义:
指定元素是实验性的注释,可能会更改,恕不另行通知。
默认情况下,可视化飞行记录器事件的客户端不应显示使用实验性批注注释的事件或字段。此注释允许事件创建者自由尝试新事件,而无需提交它们。
因此...在具有非 JFR 含义的非 JFR 上下文中重用是不可取的。任何核心Java工具(除了JFR本身)或第三方工具都不太可能特别注意这个注释1。@jdk.jfr.Experimental
此外,作者还评论道:@jdk.jfr.Experimental
“我同意。注释是为飞行记录器准备的,不应在该上下文之外使用。(我是这门课的作者)“ – Kire Haglin
1 - ....但我可能是错的。
添加回答
举报