【背景】
折腾:
【记录】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中获得变量的类型