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