考虑了官方Java教程和过去的一些经验之后,
几乎没有什么东西不清楚,所以如果有人用简单的方式解释它,我会很高兴。

Class valueClass = agp.getValueClass(); ///the method's return type is Class<?>

if(Double.class.equals(valueClass))
{
...
}


这样,我的IDE会显示原始警告。我已将第一行更改为

 Class<?> valueClass = agp.getValueClass();


我还有什么其他合理的选择,它们会带来什么影响?

先感谢您。

最佳答案

有一种选择:

Double.class.isAssignableFrom(valueClass)


它不仅检查valueClass是否相等,而且“允许” Double的子类。



另外,您的agp变量也可能包含该值。假设有一个getValue()方法,该方法可能返回Object类型,则可以使用instanceof

if(agp.getValue()!=null){
  if(agp.getValue().getClass() instanceof Double){ //getClass() returns the runtime class
    //it's a (subclass of) Double!
  }
}

关于java - Java泛型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3500216/

10-09 07:02