我有一个方法可以传递任何类型的参数。我的目标是确定传递的参数是否为数字,然后找到该数字的绝对值。传递的对象可以是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/