在运行时,在我的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<String, String> 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"}));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句