Java中的泛型

Java中的泛型,java,generics,Java,Generics,考虑了官方Java教程和过去的一些线程, 没有什么事情是不清楚的,所以如果有人能用简单的语言来解释,我会很高兴的 Class valueClass = agp.getValueClass(); ///the method's return type is Class<?> if(Double.class.equals(valueClass)) { ... } 我的IDE向我显示了一个原始类型警告。我把第一行改成了 Class<?> valueClass = agp.

考虑了官方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方法,该方法可能返回类型对象,则可以使用instanceof:


有一种选择:

Double.class.isAssignableFrom(valueClass)
它不仅检查valueClass是否相等,还“允许”Double的子类

此外,agp变量可能也包含该值。假设存在一个getValue方法,该方法可能返回类型对象,则可以使用instanceof:

我的IDE向我显示原始类型警告

必须为局部变量指定与方法返回的类型相同的类型。由于该方法返回类,因此必须使用该类。此时无法限制泛型参数

我的IDE向我显示原始类型警告


必须为局部变量指定与方法返回的类型相同的类型。由于该方法返回类,因此必须使用该类。此时无法限制泛型参数。

谢谢大家,现在我很清楚:-

它可以是任何类,甚至对象本身,而

Class<? extends Object> 

只接受对象的一个子类型,因此不接受对象本身。

谢谢大家,现在我很清楚:-

它可以是任何类,甚至对象本身,而

Class<? extends Object> 

只接受对象的子类型,因此不接受对象本身。

所述方法的返回值不强制为double。在这种情况下,我所述的方法将返回false。你在寻找一种不同的行为吗?我在寻找一种不同的泛型,一种可能更有意义的替代品。此外,对所使用的泛型进行简要解释也很好-如果是这样的话,你总是可以指定你的值可以是的所有不同类型中最常见的超类,很可能是对象。在这种情况下,使用类上述方法的返回值不强制为double。在这种情况下,我所述的方法将返回false。你在寻找一种不同的行为吗?我在寻找一种不同的泛型,一种可能更有意义的替代品。此外,对所使用的泛型进行简要解释也很好-如果是这样的话,你总是可以指定你的值可以是的所有不同类型中最常见的超类,很可能是对象。在这种情况下,使用CLASSE,它的确切含义是什么?用我自己的话说,这可能只是任何一门课。到什么程度?它意味着什么。这个是封装类型的占位符。类基本上是指任何类型。课堂:这到底是什么意思?用我自己的话说,这可能只是任何一门课。到什么程度?它意味着什么。这个是封装类型的占位符。类基本上是指任何类型。错了!差不多,有什么区别吗?没有,没有区别。就像定义一个类一样,如果愿意,可以显式地说extensedobject,但这并没有功能上的区别。事实上,在我的IDE IntelliJ中,你会得到一个黄色的歪歪扭扭的警告?扩展对象“是冗余的,考虑替换为‘?’”。在一个相当危险的情况下,它们不同于具有简单名称对象而不是java. Lang.Objor的类。当然,这大多是吹毛求疵。错了!差不多,有什么区别吗?没有,没有区别。就像定义一个类一样,如果愿意,可以显式地说extensedobject,但这并没有功能上的区别。事实上,在我的IDE IntelliJ中,你会得到一个黄色的歪歪扭扭的警告?扩展对象“是冗余的,考虑替换为‘?’”。在一个相当危险的情况下,它们不同于具有简单名称对象而不是java. Lang.Objor的类。当然,这大多是吹毛求疵。