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