如果我们有一个用于设置某些特定于类的常量的注释,则以这种方式声明:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Tooltip {
String value();
}
像这样使用:
package applicationroot
@Tooltip("createCubeTool.tipText")
public class CreateCubeTool extends EditingTool
{
}
使用超类型:
public abstract class EditingTool
{
public String getToolTipText()
{
//Don't worry about this, other than that it requires a custom value Per Concrete class.
return null == tooltip ? null : Translate.text(tooltip.value());
}
}
哪里应该声明注释?
除了关于项目整体结构的问题外,我想到这个特定的注释只适用于ModelingTool
类型范围的子类。在一个完全独立的包中声明它是否有意义,package applicationroot.tool.annotations;
作为一个贡献者建议,还是更好地声明为使用它的ModelingTool
类型的成员?
到目前为止,我发现的所有引用都讨论了如何来声明自定义注释,而不是它们适合项目整体结构的位置。
答案 0 :(得分:0)
通常,如果text
由于某些原因是可变的,例如它需要在输出之前进行格式化或转换,将其声明为实例成员可能是更好的主意。
相反,可以在注释的元信息中定义决定的 CONSTANT 。值得注意的是,您必须使用 reflection 来获取可能降低性能的元信息。 反射会带来深度调用堆栈。
在这种情况下,我认为使用注释是不值得的。除了表面上优雅的代码之外,你对重构没什么好处。