Java程序  |  71行  |  1.45 KB

package annotations.el;

import java.util.LinkedHashMap;

import annotations.util.coll.VivifyingMap;

/*>>>
import org.checkerframework.checker.nullness.qual.Nullable;
*/

public class AField extends ADeclaration {
  static <K extends Object> VivifyingMap<K, AField>
  newVivifyingLHMap_AF() {
    return new VivifyingMap<K, AField>(
        new LinkedHashMap<K, AField>()) {
      @Override
      public AField createValueFor(K k) {
        return new AField("" + k);
      }

      @Override
      public boolean subPrune(AField v) {
        return v.prune();
      }
    };
  }

  public AExpression init;
  private final String fieldName;

  AField(String fieldName) {
    super(fieldName);
    this.fieldName = fieldName;
  }

  AField(AField field) {
    super(field.fieldName, field);
    fieldName = field.fieldName;
    init = field.init == null ? null : field.init.clone();
  }

  @Override
  public AField clone() {
    return new AField(this);
  }

  @Override
  public boolean equals(Object o) {
    return o instanceof AField
        && ((AField) o).equalsField(this);
  }

  final boolean equalsField(AField o) {
    return super.equals(o);
  }

  @Override  // TODO: remove?
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("AField ");
    sb.append(fieldName);
    sb.append(super.toString());
    return sb.toString();
  }

  @Override
  public <R, T> R accept(ElementVisitor<R, T> v, T t) {
    return v.visitField(this, t);
  }
}