JDK1.8源码解读之 Annotation

330 阅读1分钟

前言

  • 如果属性具有注释特征,则将Annotation对象用作文本属性值的包装。
  • 这些特征是:应用属性的文本范围对于范围的语义至关重要。
  • 这意味着该属性不能应用于它所应用于的文本范围的子范围,并且,如果两个相邻的文本范围对此属性具有相同的值,则该属性仍无法应用于整个组合范围(具有该值) 。
  • 如果基础文本发生更改,则该属性或其值通常不再适用。
  • 一个例子是附加在句子上的语法信息:对于上一个句子,您可以说“一个例子”是主语,但是不能对“一个”,“例子”或“考试”说同样的话。
  • 更改文本后,语法信息通常变得无效。
  • 另一个例子是日语阅读信息(yomi)。
  • 将属性值包装到Annotation对象中可确保即使属性值相等也不会合并相邻的文本运行,并向文本容器指示如果修改了基础文本则应丢弃该属性。

源码

package java.text;

public class Annotation {

    /**
     * 使用给定值构造注释记录,该值可以为null。
     */
    public Annotation(Object value) {
        this.value = value;
    }

    /**
     * 返回属性的值,可以为null。
     */
    public Object getValue() {
        return value;
    }

    /**
     * 返回此注释的字符串表示形式。 
     */
    public String toString() {
        return getClass().getName() + "[value=" + value + "]";
    }

    private Object value;

};