我想动态地判断Java中的Object是否为数字.我的代码如下:
if(obj.getClass().equals(Number.class)) {
attributeTypeStr = "Numeric";
} else {
attributeTypeStr = "Non-Numeric";
}
Run Code Online (Sandbox Code Playgroud)
该Object obj可以是任何数值类型,如Integer, Float, Double等,但是,当我与测试它Integer/Float/Double,则attributeTypeStr总是返回"Non-Numeric".我想这是因为Integer/Float/Double是子类Number但Number.class不相等Double.class.我可以用类似的东西
if(obj.getClass().equals(Integer.class) || obj.getClass().equals(Float.class) || obj.getClass().equals(Double.class))
Run Code Online (Sandbox Code Playgroud)
但它看起来太冗长了.那么有一个简单的方法吗?
使用Class#isAssignableFrom(Class)哪种状态
确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口.
干
Integer obj = new Integer(2);
System.out.println(Number.class.isAssignableFrom(obj.getClass()));
Run Code Online (Sandbox Code Playgroud)
因此将打印true.
它可能与你的问题无关,但只是fyi:
| 归档时间: |
|
| 查看次数: |
8872 次 |
| 最近记录: |