【背景】
折腾:
【记录】antlr异常处理:在ParseTree去getTree之后,判断某个树节点是否出现异常
期间,需要去在java代码运行期间,获得一个变量的类型是什么。
【折腾过程】
1.参考:
How know a variable type in java?
去试试。
最后是通过如下代码:
ParseTree parseTreeVaraibleBodyClassValueSingleCommonClass = (ParseTree) parseTreeVaraibleBodyClassValueSingleCommon.getChild(0); Class classValue = parseTreeVaraibleBodyClassValueSingleCommonClass.getClass(); System.out.println("classValue=" + classValue); String className = classValue.getName(); System.out.println("className=" + className); Object objPayload = parseTreeVaraibleBodyClassValueSingleCommonClass.payload; String payloadClassName =objPayload.getClass().getName(); System.out.println("payloadClassName=" + payloadClassName); boolean isException = false; isException = objPayload instanceof RecognitionException; System.out.println("isException=" + isException);
可以获得当前变量类型,且可以判断是否是属于某个类型的(异常)
输出为:
classValue=class org.antlr.runtime.tree.ParseTree className=org.antlr.runtime.tree.ParseTree payloadClassName=org.antlr.runtime.MismatchedSetException isException=true
如图:
【总结】
java中,获得变量的类型用:
Class classValue = xxx.getClass(); System.out.println("classValue=" + classValue);
再获得类型的名字,用:
String className = classValue.getName(); System.out.println("className=" + className);
判断是否是某个类型用:
boolean isSomeType = false; isSomeType = someVariable instanceof SomeTypeToCheck; System.out.println("isSomeType=" + isSomeType);
即可。
转载请注明:在路上 » 【已解决】Java中获得变量的类型