java - 如何找到对象的类型然后相应地工作?

标签 java object

我有一个方法可以传递任何类型的参数。我的目标是确定传递的参数是否为数字,然后找到该数字的绝对值。传递的对象可以是double、Integer、string、long等。

演示.java

public class Demo{
public Object abs(Object O){
       if(Number.class.isAssignableFrom(O.getClass())){

    // Check the type of the number and return the absolute value of the number

        }
       else
       {
             return -1
       }
  }

最佳答案

如果您想找到对象的确切类型,可以使用一系列 if-then-else,如下所示:

Class<? extends Object> cls = O.getClass();
if (cls == Integer.class) {
} else if (cls == String.class) {
} else if (cls == Long.class) {
} else if (cls == Double.class) {
} ...

但是,这听起来像是一个糟糕的设计选择:首先考虑使用重载方法代替采用 Object 的“catch all”方法来避免此问题;

public Double abs(Double O){
   ...
}
public String abs(String O){
   ...
}
public Long abs(Long O){
   ...
}
public Integer abs(Integer O){
   ...
}

关于java - 如何找到对象的类型然后相应地工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976117/

相关文章:

java - 将 NewDirectByteBuffer 从 C++ 传递到 Java (JNI)

java - 程序输出中的间距错误

javascript - 如何使用javascript中reduce函数中的属性值跳过重复对象?

Javascript 对象定义技术,优点和缺点

javascript - 对象方法的不一致行为 'hasOwnProperty'

java - MPP架构上的多线程应用

java - MouseListener没有移动

java - 在 java 中将字符串转换为日期时出现意外输出

java - 购物车 Java 应用程序 (addToCart)

javascript - 在 Node.js 中解析获取 JSON 子对象内容