import org.aikodi.chameleon.core.property.StaticChameleonProperty; //导入依赖的package包/类
protected Java7(String name, LookupContextFactory lookupFactory,Revision version) {
super(name, lookupFactory, version);
STRICTFP = add(new StaticChameleonProperty("strictfp", Declaration.class));
SYNCHRONIZED = add(new StaticChameleonProperty("synchronized", Method.class));
TRANSIENT = add(new StaticChameleonProperty("transient", Variable.class));
VOLATILE = add(new StaticChameleonProperty("volatile", Variable.class));
IMPLEMENTS_RELATION = add(new StaticChameleonProperty("implements", AbstractInheritanceRelation.class));
PROTECTED = add(new ProtectedProperty(SCOPE_MUTEX));
PRIVATE = add(new PrivateProperty(SCOPE_MUTEX));
PUBLIC = add(new PublicProperty(SCOPE_MUTEX));
PACKAGE_ACCESSIBLE = add(new PackageProperty(SCOPE_MUTEX));
PRIMITIVE_TYPE = add(new PrimitiveTypeProperty("primitive"));
NUMERIC_TYPE = add(new NumericTypeProperty("numeric"));
REFERENCE_TYPE = PRIMITIVE_TYPE.inverse();
UNBOXABLE_TYPE = add(new UnboxableTypeProperty("unboxable"));
ANNOTATION_TYPE = add(new StaticChameleonProperty("annotation", Type.class));
DEFAULT = add(new StaticChameleonProperty("default", Method.class));
DEFAULT.addContradiction(ABSTRACT);
// In Java, a constructor is a class method
// CONSTRUCTOR.addImplication(CLASS);
// In Java, constructors are not inheritable
CONSTRUCTOR.addImplication(INHERITABLE.inverse());
// A numeric type is a primitive type
NUMERIC_TYPE.addImplication(PRIMITIVE_TYPE);
INHERITABLE.addValidElementType(VariableDeclarator.class);
PRIVATE.addValidElementType(VariableDeclarator.class);
PUBLIC.addValidElementType(VariableDeclarator.class);
PROTECTED.addValidElementType(VariableDeclarator.class);
OVERRIDABLE.addValidElementType(VariableDeclarator.class);
DEFINED.addValidElementType(VariableDeclarator.class);
REFINABLE.addValidElementType(MemberVariableDeclarator.class);
FINAL.addValidElementType(MemberVariableDeclarator.class);
TYPE_WITH_VALUE_SEMANTICS = add(new ValueClass());
TYPE_WITH_REFERENCE_SEMANTICS = TYPE_WITH_VALUE_SEMANTICS.inverse();
for(String string: new String[]{"==","!=","+","++","-","--","*","/","+=","-=","*=","/=","&","&&","|","||","^","!","&=","|=","^=","<<=",">>=",">>>+","%","<",">","<=",">=","%=","<<",">>",">>>"}) {
_operatorNames.add(string);
}
initNameMaps();
}
请发表评论