java返回string类型_在运行时确定String中Java表达式的返回类型

在运行时,在我的Java程序中,给定一个String,我想知道返回类型。例如:

1 + 1返回int

1L + 1L会传回long

1L + 1返回long

1 + 1.5返回double

1 + 2 - 3 * 4 / 5返回int

1 / 0返回int

1 + Math.nextInt()返回int

1.5 + Math.nextInt()返回double

Color.RED返回java.awt.Color

鉴于a是一个int:a + 1返回int

鉴于a是一个int:a + 1.5返回double

没有必要实际评估代码:我只需要返回类型。我该如何使用JDK运行时编译器,ECJ JDT或任何其他纯Java依赖项来执行此操作?

详细代码:下面是此代码的简化的伪代码单元测试:

public static void ExpressionTyper {

public String determineType(String expression, Map variableTypes) {

... // How do I implement this?

}

}

public void ExpressionTyperTest {

@Test public void determineType() {

assertEquals("int", ExpressionTyper.determineType("1 + 1", emptyMap());

assertEquals("long", ExpressionTyper.determineType("1 + 1L", emptyMap());

assertEquals("double", ExpressionTyper.determineType("1 + 1.5", emptyMap());

assertEquals("int", ExpressionTyper.determineType("a + 1", mapOf({"a", "int"}));

assertEquals("int", ExpressionTyper.determineType("a + b", mapOf({"a", "int"}, {"b", "int"}));

assertEquals("double", ExpressionTyper.determineType("a + b", mapOf({"a", "double"}, {"b", "int"}));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值