我是Java的新手,Java中是否有一种方法可以告诉您对象的类型?
例如,在Python中键入
type(34) 它会回来 int
type('abc') 会回来的 string
我一直在寻找各处,但我找不到办法.有帮助吗?
非常感谢.
T.J*_*der 12
该instanceof运营商是做运行时类型检查的最方便的方法:
if (someObject instanceof String) {
// It's a string
}
Run Code Online (Sandbox Code Playgroud)
或者,在任何实例上,您都可以使用getClass,它为您Class提供了对象类型的实例.
Class c = someObject.getClass();
Run Code Online (Sandbox Code Playgroud)
该Class实例将有一个getName方法可以调用以获取该名称的字符串版本(以及许多其他方便的方法).
您可以Class使用类型名称获取对象.class,例如:
Class stringClass = String.class;
Run Code Online (Sandbox Code Playgroud)
正如Peter Lawrey在评论中指出的那样,所有这些假设你都在处理一个对象引用,而不是一个原语.没有办法对基元进行运行时类型检查,但这没关系,因为与对象引用(可能是编译时声明Object)不同,由于声明,您总是知道原始类型是什么.它只是真正出现的对象类型.
如果您发现自己在Java代码中进行了大量显式类型检查,则可能表明结构/设计问题.在大多数情况下,您不需要在运行时检查类型.(当然也有例外.)