当前位置: 首页>>代码示例>>Java>>正文


Java Kind类代码示例

本文整理汇总了Java中lombok.core.AST.Kind的典型用法代码示例。如果您正苦于以下问题:Java Kind类的具体用法?Java Kind怎么用?Java Kind使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


Kind类属于lombok.core.AST包,在下文中一共展示了Kind类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: sanityCheckForMethodGeneratingAnnotationsOnBuilderClass

import lombok.core.AST.Kind; //导入依赖的package包/类
public static void sanityCheckForMethodGeneratingAnnotationsOnBuilderClass(EclipseNode typeNode, EclipseNode errorNode) {
	List<String> disallowed = null;
	for (EclipseNode child : typeNode.down()) {
		if (child.getKind() != Kind.ANNOTATION) continue;
		for (Class<? extends java.lang.annotation.Annotation> annType : INVALID_ON_BUILDERS) {
			if (annotationTypeMatches(annType, child)) {
				if (disallowed == null) disallowed = new ArrayList<String>();
				disallowed.add(annType.getSimpleName());
			}
		}
	}
	
	int size = disallowed == null ? 0 : disallowed.size();
	if (size == 0) return;
	if (size == 1) {
		errorNode.addError("@" + disallowed.get(0) + " is not allowed on builder classes.");
		return;
	}
	StringBuilder out = new StringBuilder();
	for (String a : disallowed) out.append("@").append(a).append(", ");
	out.setLength(out.length() - 2);
	errorNode.addError(out.append(" are not allowed on builder classes.").toString());
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:24,代码来源:EclipseHandlerUtil.java

示例2: injectType

import lombok.core.AST.Kind; //导入依赖的package包/类
/**
 * Adds an inner type (class, interface, enum) to the given type. Cannot inject top-level types.
 * 
 * @param typeNode parent type to inject new type into
 * @param type New type (class, interface, etc) to inject.
 */
public static EclipseNode injectType(final EclipseNode typeNode, final TypeDeclaration type) {
	type.annotations = addSuppressWarningsAll(typeNode, type, type.annotations);
	type.annotations = addGenerated(typeNode, type, type.annotations);
	TypeDeclaration parent = (TypeDeclaration) typeNode.get();
	
	if (parent.memberTypes == null) {
		parent.memberTypes = new TypeDeclaration[] { type };
	} else {
		TypeDeclaration[] newArray = new TypeDeclaration[parent.memberTypes.length + 1];
		System.arraycopy(parent.memberTypes, 0, newArray, 0, parent.memberTypes.length);
		newArray[parent.memberTypes.length] = type;
		parent.memberTypes = newArray;
	}
	
	return typeNode.add(type, Kind.TYPE);
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:23,代码来源:EclipseHandlerUtil.java

示例3: createListOfNonExistentFields

import lombok.core.AST.Kind; //导入依赖的package包/类
/**
 * Given a list of field names and a node referring to a type, finds each name in the list that does not match a field within the type.
 */
public static List<Integer> createListOfNonExistentFields(List<String> list, EclipseNode type, boolean excludeStandard, boolean excludeTransient) {
	boolean[] matched = new boolean[list.size()];
	
	for (EclipseNode child : type.down()) {
		if (list.isEmpty()) break;
		if (child.getKind() != Kind.FIELD) continue;
		if (excludeStandard) {
			if ((((FieldDeclaration)child.get()).modifiers & ClassFileConstants.AccStatic) != 0) continue;
			if (child.getName().startsWith("$")) continue;
		}
		if (excludeTransient && (((FieldDeclaration)child.get()).modifiers & ClassFileConstants.AccTransient) != 0) continue;
		int idx = list.indexOf(child.getName());
		if (idx > -1) matched[idx] = true;
	}
	
	List<Integer> problematic = new ArrayList<Integer>();
	for (int i = 0 ; i < list.size() ; i++) {
		if (!matched[i]) problematic.add(i);
	}
	
	return problematic;
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:26,代码来源:EclipseHandlerUtil.java

示例4: createTypeReference

import lombok.core.AST.Kind; //导入依赖的package包/类
public TypeReference createTypeReference(EclipseNode type, long p) {
	List<String> list = new ArrayList<String>();
	list.add(type.getName());
	EclipseNode tNode = type.up();
	while (tNode != null && tNode.getKind() == Kind.TYPE) {
		list.add(tNode.getName());
		tNode = tNode.up();
	}
	Collections.reverse(list);
	
	if (list.size() == 1) return new SingleTypeReference(list.get(0).toCharArray(), p);
	long[] ps = new long[list.size()];
	char[][] tokens = new char[list.size()][];
	for (int i = 0; i < list.size(); i++) {
		ps[i] = p;
		tokens[i] = list.get(i).toCharArray();
	}
	
	return new QualifiedTypeReference(tokens, ps);
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:21,代码来源:HandleEqualsAndHashCode.java

示例5: findFields

import lombok.core.AST.Kind; //导入依赖的package包/类
public static List<JavacNode> findFields(JavacNode typeNode, boolean nullMarked) {
	ListBuffer<JavacNode> fields = new ListBuffer<JavacNode>();
	for (JavacNode child : typeNode.down()) {
		if (child.getKind() != Kind.FIELD) continue;
		JCVariableDecl fieldDecl = (JCVariableDecl) child.get();
		//Skip fields that start with $
		if (fieldDecl.name.toString().startsWith("$")) continue;
		long fieldFlags = fieldDecl.mods.flags;
		//Skip static fields.
		if ((fieldFlags & Flags.STATIC) != 0) continue;
		boolean isFinal = (fieldFlags & Flags.FINAL) != 0;
		boolean isNonNull = nullMarked && !findAnnotations(child, NON_NULL_PATTERN).isEmpty();
		if ((isFinal || isNonNull) && fieldDecl.init == null) fields.append(child);
	}
	return fields.toList();
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:17,代码来源:HandleConstructor.java

示例6: findAllFields

import lombok.core.AST.Kind; //导入依赖的package包/类
public static List<JavacNode> findAllFields(JavacNode typeNode) {
	ListBuffer<JavacNode> fields = new ListBuffer<JavacNode>();
	for (JavacNode child : typeNode.down()) {
		if (child.getKind() != Kind.FIELD) continue;
		JCVariableDecl fieldDecl = (JCVariableDecl) child.get();
		//Skip fields that start with $
		if (fieldDecl.name.toString().startsWith("$")) continue;
		long fieldFlags = fieldDecl.mods.flags;
		//Skip static fields.
		if ((fieldFlags & Flags.STATIC) != 0) continue;
		//Skip initialized final fields
		boolean isFinal = (fieldFlags & Flags.FINAL) != 0;
		if (!isFinal || fieldDecl.init == null) fields.append(child);
	}
	return fields.toList();
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:17,代码来源:HandleConstructor.java

示例7: cloneSelfType

import lombok.core.AST.Kind; //导入依赖的package包/类
public static JCExpression cloneSelfType(JavacNode childOfType) {
	JavacNode typeNode = childOfType;
	JavacTreeMaker maker = childOfType.getTreeMaker();
	while (typeNode != null && typeNode.getKind() != Kind.TYPE) typeNode = typeNode.up();
	if (typeNode != null && typeNode.get() instanceof JCClassDecl) {
		JCClassDecl type = (JCClassDecl) typeNode.get();
		ListBuffer<JCExpression> typeArgs = new ListBuffer<JCExpression>();
		if (!type.typarams.isEmpty()) {
			for (JCTypeParameter tp : type.typarams) {
				typeArgs.append(maker.Ident(tp.name));
			}
			return maker.TypeApply(maker.Ident(type.name), typeArgs.toList());
		} else {
			return maker.Ident(type.name);
		}
	} else {
		return null;
	}
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:20,代码来源:JavacHandlerUtil.java

示例8: findAnnotations

import lombok.core.AST.Kind; //导入依赖的package包/类
/**
 * Searches the given field node for annotations and returns each one that matches the provided regular expression pattern.
 * 
 * Only the simple name is checked - the package and any containing class are ignored.
 */
public static List<JCAnnotation> findAnnotations(JavacNode fieldNode, Pattern namePattern) {
	ListBuffer<JCAnnotation> result = new ListBuffer<JCAnnotation>();
	for (JavacNode child : fieldNode.down()) {
		if (child.getKind() == Kind.ANNOTATION) {
			JCAnnotation annotation = (JCAnnotation) child.get();
			String name = annotation.annotationType.toString();
			int idx = name.lastIndexOf(".");
			String suspect = idx == -1 ? name : name.substring(idx + 1);
			if (namePattern.matcher(suspect).matches()) {
				result.append(annotation);
			}
		}
	}	
	return result.toList();
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:21,代码来源:JavacHandlerUtil.java

示例9: createListOfNonExistentFields

import lombok.core.AST.Kind; //导入依赖的package包/类
/**
 * Given a list of field names and a node referring to a type, finds each name in the list that does not match a field within the type.
 */
public static List<Integer> createListOfNonExistentFields(List<String> list, JavacNode type, boolean excludeStandard, boolean excludeTransient) {
	boolean[] matched = new boolean[list.size()];
	
	for (JavacNode child : type.down()) {
		if (list.isEmpty()) break;
		if (child.getKind() != Kind.FIELD) continue;
		JCVariableDecl field = (JCVariableDecl)child.get();
		if (excludeStandard) {
			if ((field.mods.flags & Flags.STATIC) != 0) continue;
			if (field.name.toString().startsWith("$")) continue;
		}
		if (excludeTransient && (field.mods.flags & Flags.TRANSIENT) != 0) continue;
		
		int idx = list.indexOf(child.getName());
		if (idx > -1) matched[idx] = true;
	}
	
	ListBuffer<Integer> problematic = new ListBuffer<Integer>();
	for (int i = 0 ; i < list.size() ; i++) {
		if (!matched[i]) problematic.append(i);
	}
	
	return problematic.toList();
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:28,代码来源:JavacHandlerUtil.java

示例10: createJavadocComment

import lombok.core.AST.Kind; //导入依赖的package包/类
private static Comment createJavadocComment(final String text, final JavacNode field) {
	return new Comment() {
		@Override public String getText() {
			return text;
		}
		
		@Override public int getSourcePos(int index) {
			return -1;
		}
		
		@Override public CommentStyle getStyle() {
			return CommentStyle.JAVADOC;
		}
		
		@Override public boolean isDeprecated() {
			return text.contains("@deprecated") && field.getKind() == Kind.FIELD && isFieldDeprecated(field);
		}
	};
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:20,代码来源:JavacHandlerUtil.java

示例11: createTypeReference

import lombok.core.AST.Kind; //导入依赖的package包/类
public JCExpression createTypeReference(JavacNode type) {
	java.util.List<String> list = new ArrayList<String>();
	list.add(type.getName());
	JavacNode tNode = type.up();
	while (tNode != null && tNode.getKind() == Kind.TYPE) {
		list.add(tNode.getName());
		tNode = tNode.up();
	}
	Collections.reverse(list);
	
	JavacTreeMaker maker = type.getTreeMaker();
	JCExpression chain = maker.Ident(type.toName(list.get(0)));
	
	for (int i = 1; i < list.size(); i++) {
		chain = maker.Select(chain, type.toName(list.get(i)));
	}
	
	return chain;
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:20,代码来源:HandleEqualsAndHashCode.java

示例12: upFromAnnotationToFields

import lombok.core.AST.Kind; //导入依赖的package包/类
/**
 * {@code @Foo int x, y;} is stored in both javac and ecj as 2 FieldDeclarations, both with the same annotation as child.
 * The normal {@code up()} method can't handle having multiple parents, but this one can.
 */
public Collection<L> upFromAnnotationToFields() {
	if (getKind() != Kind.ANNOTATION) return Collections.emptyList();
	L field = up();
	if (field == null || field.getKind() != Kind.FIELD) return Collections.emptyList();
	L type = field.up();
	if (type == null || type.getKind() != Kind.TYPE) return Collections.emptyList();
	
	List<L> fields = new ArrayList<L>();
	for (L potentialField : type.down()) {
		if (potentialField.getKind() != Kind.FIELD) continue;
		if (fieldContainsAnnotation(potentialField.get(), get())) fields.add(potentialField);
	}
	
	return fields;
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:20,代码来源:LombokNode.java

示例13: findRequiredFields

import lombok.core.AST.Kind; //导入依赖的package包/类
public static List<JavacNode> findRequiredFields(JavacNode typeNode) {
	ListBuffer<JavacNode> fields = new ListBuffer<JavacNode>();
	for (JavacNode child : typeNode.down()) {
		if (child.getKind() != Kind.FIELD) continue;
		JCVariableDecl fieldDecl = (JCVariableDecl) child.get();
		//Skip fields that start with $
		if (fieldDecl.name.toString().startsWith("$")) continue;
		long fieldFlags = fieldDecl.mods.flags;
		//Skip static fields.
		if ((fieldFlags & Flags.STATIC) != 0) continue;
		boolean isFinal = (fieldFlags & Flags.FINAL) != 0;
		boolean isNonNull = !findAnnotations(child, NON_NULL_PATTERN).isEmpty();
		if ((isFinal || isNonNull) && fieldDecl.init == null) fields.append(child);
	}
	return fields.toList();
}
 
开发者ID:mobmead,项目名称:EasyMPermission,代码行数:17,代码来源:HandleConstructor.java

示例14: createTypeReference

import lombok.core.AST.Kind; //导入依赖的package包/类
private TypeReference createTypeReference(EclipseNode type, long p) {
	List<String> list = new ArrayList<String>();
	list.add(type.getName());
	EclipseNode tNode = type.up();
	while (tNode != null && tNode.getKind() == Kind.TYPE) {
		list.add(tNode.getName());
		tNode = tNode.up();
	}
	Collections.reverse(list);
	
	if (list.size() == 1) return new SingleTypeReference(list.get(0).toCharArray(), p);
	long[] ps = new long[list.size()];
	char[][] tokens = new char[list.size()][];
	for (int i = 0; i < list.size(); i++) {
		ps[i] = p;
		tokens[i] = list.get(i).toCharArray();
	}
	
	return new QualifiedTypeReference(tokens, ps);
}
 
开发者ID:redundent,项目名称:lombok,代码行数:21,代码来源:HandleEqualsAndHashCode.java

示例15: handle

import lombok.core.AST.Kind; //导入依赖的package包/类
private static void handle(AnnotationValues<?> annotation, Annotation ast, EclipseNode annotationNode) {
	Object anno = annotation.getInstance();
	
	EclipseNode fieldNode = annotationNode.up();
	EclipseNode typeNode = fieldNode.up();
	
	if (fieldNode.getKind() != Kind.FIELD) {
		annotationNode.addError("@" + anno.getClass().getSimpleName() + " is only supported on a field.");
		return;
	}
	
	FieldDeclaration field = (FieldDeclaration) fieldNode.get();
	
	if (field.isStatic()) {
		annotationNode.addError("@" + anno.getClass().getSimpleName() + " is not legal on static fields.");
		return;
	}
	
	if (fieldExists(toProperCase(new String(field.name)), fieldNode) == MemberExistsResult.NOT_EXISTS) {
		FieldDeclaration fieldDecl = createField(anno, fieldNode, ast);
		injectFieldSuppressWarnings(typeNode, fieldDecl);
		
		typeNode.rebuild();
	}
}
 
开发者ID:redundent,项目名称:lombok,代码行数:26,代码来源:HandleRelations.java


注:本文中的lombok.core.AST.Kind类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。