本文整理汇总了Java中org.eclipse.jdt.core.dom.AST.newCastExpression方法的典型用法代码示例。如果您正苦于以下问题:Java AST.newCastExpression方法的具体用法?Java AST.newCastExpression怎么用?Java AST.newCastExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.eclipse.jdt.core.dom.AST
的用法示例。
在下文中一共展示了AST.newCastExpression方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: createNarrowCastIfNessecary
import org.eclipse.jdt.core.dom.AST; //导入方法依赖的package包/类
/**
* Checks if the assignment needs a downcast and inserts it if necessary
*
* @param expression
* the right hand-side
* @param expressionType
* the type of the right hand-side. Can be null
* @param ast
* the AST
* @param variableType
* the Type of the variable the expression will be assigned to
* @param is50OrHigher
* if <code>true</code> java 5.0 code will be assumed
* @return the casted expression if necessary
*/
private static Expression createNarrowCastIfNessecary(Expression expression, ITypeBinding expressionType, AST ast, ITypeBinding variableType, boolean is50OrHigher) {
PrimitiveType castTo = null;
if (variableType.isEqualTo(expressionType))
{
return expression; //no cast for same type
}
if (is50OrHigher) {
if (ast.resolveWellKnownType("java.lang.Character").isEqualTo(variableType)) {
castTo = ast.newPrimitiveType(PrimitiveType.CHAR);
}
if (ast.resolveWellKnownType("java.lang.Byte").isEqualTo(variableType)) {
castTo = ast.newPrimitiveType(PrimitiveType.BYTE);
}
if (ast.resolveWellKnownType("java.lang.Short").isEqualTo(variableType)) {
castTo= ast.newPrimitiveType(PrimitiveType.SHORT);
}
}
if (ast.resolveWellKnownType("char").isEqualTo(variableType)) {
castTo = ast.newPrimitiveType(PrimitiveType.CHAR);
}
if (ast.resolveWellKnownType("byte").isEqualTo(variableType)) {
castTo = ast.newPrimitiveType(PrimitiveType.BYTE);
}
if (ast.resolveWellKnownType("short").isEqualTo(variableType)) {
castTo= ast.newPrimitiveType(PrimitiveType.SHORT);
}
if (castTo != null) {
CastExpression cast = ast.newCastExpression();
if (NecessaryParenthesesChecker.needsParentheses(expression, cast, CastExpression.EXPRESSION_PROPERTY)) {
ParenthesizedExpression parenthesized = ast.newParenthesizedExpression();
parenthesized.setExpression(expression);
cast.setExpression(parenthesized);
} else {
cast.setExpression(expression);
}
cast.setType(castTo);
return cast;
}
return expression;
}
示例2: useExistingParentCastProposal
import org.eclipse.jdt.core.dom.AST; //导入方法依赖的package包/类
private static boolean useExistingParentCastProposal(ICompilationUnit cu, CastExpression expression,
Expression accessExpression, SimpleName accessSelector, ITypeBinding[] paramTypes,
Collection<CUCorrectionProposal> proposals) {
ITypeBinding castType= expression.getType().resolveBinding();
if (castType == null) {
return false;
}
if (paramTypes != null) {
if (Bindings.findMethodInHierarchy(castType, accessSelector.getIdentifier(), paramTypes) == null) {
return false;
}
} else if (Bindings.findFieldInHierarchy(castType, accessSelector.getIdentifier()) == null) {
return false;
}
ITypeBinding bindingToCast= accessExpression.resolveTypeBinding();
if (bindingToCast != null && !bindingToCast.isCastCompatible(castType)) {
return false;
}
IMethodBinding res= Bindings.findMethodInHierarchy(castType, accessSelector.getIdentifier(), paramTypes);
if (res != null) {
AST ast= expression.getAST();
ASTRewrite rewrite= ASTRewrite.create(ast);
CastExpression newCast= ast.newCastExpression();
newCast.setType((Type) ASTNode.copySubtree(ast, expression.getType()));
newCast.setExpression((Expression) rewrite.createCopyTarget(accessExpression));
ParenthesizedExpression parents= ast.newParenthesizedExpression();
parents.setExpression(newCast);
ASTNode node= rewrite.createCopyTarget(expression.getExpression());
rewrite.replace(expression, node, null);
rewrite.replace(accessExpression, parents, null);
String label= CorrectionMessages.UnresolvedElementsSubProcessor_missingcastbrackets_description;
ASTRewriteCorrectionProposal proposal = new ASTRewriteCorrectionProposal(label, cu, rewrite,
IProposalRelevance.ADD_PARENTHESES_AROUND_CAST);
proposals.add(proposal);
return true;
}
return false;
}