java new expression_Java AST.newCastExpression方法代碼示例

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 true 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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值