这个Java语法是什么意思?(`Class<;?扩展E>;clazz`)
我需要一个自定义方法来检查包含类实例的列表并调用此方法,但我不理解此语法“class clazz”,也不理解此方法的第二个参数是什么这个Java语法是什么意思?(`Class<;?扩展E>;clazz`),java,Java,我需要一个自定义方法来检查包含类实例的列表并调用此方法,但我不理解此语法“class clazz”,也不理解此方法的第二个参数是什么 public static <E> boolean containsInstanceOfOidInrArraylist(List<E> Arraylist, Class<? extends E> clazz) { for (E e : Arraylist) { if (clazz.isIn
public static <E> boolean containsInstanceOfOidInrArraylist(List<E> Arraylist, Class<? extends E> clazz) {
for (E e : Arraylist) {
if (clazz.isInstance(e)) {
return true;
}
}
return false;
}
public static boolean containsinstanceofoidinraylist(List-Arraylist,ClassOk,因此函数的第一个参数是名为Arraylist
的List
(在Java中不应将变量大写,应将其命名为Arraylist
)
第二个参数是类
:
Class
是一个可参数化的类,因此可以使用语法
Class
其中T
是一个类型。通过编写Class
,您声明了一个
类
对象,可以是任何类型(?
是通配符)。类
类型是包含类的元信息的类型
现在你知道了Class
的意思,但是Class的意思呢参见本教程:
“上界通配符
您可以使用上限通配符来放宽对变量的限制。例如,假设您想编写一个在List
、List
和List
上工作的方法;您可以使用上限通配符来实现这一点
要声明上界通配符,请使用通配符(“?”),后跟extends关键字,再后跟其上界。请注意,在此上下文中,extends通常表示“extends”(在类中)或“implements”(在接口中)
第二个参数是一个与列表中的对象类相同的类,或对其进行扩展。clazz用作变量名,因为类是保留关键字,不能使用。我建议您从学习泛型开始。
。这里可能是一个很好的开始复制的地方。这有一个很好的解释阅读DB推荐的教程后,Class
是一个类的名称(它是java.lang.Class
),而clazz
是一个变量名…之所以选择它,是因为您不能使用class
作为变量名。此外,List
和ClassHi的组合,请向我们提供您的代码和问题。现在我们不知道链接教程有什么问题。