Java 泛型数组作为参数
我尝试使用以下函数计算任何数组中不同元素的数量:Java 泛型数组作为参数,java,generics,Java,Generics,我尝试使用以下函数计算任何数组中不同元素的数量: public static long distinctElements(T[] ar) { return Arrays.asList(ar).stream().distinct().count(); } 这里的问题是我不能使用'T[]ar'作为参数(Java说它不知道类型T)。我怎样才能解决这个问题?此函数位于不包含类型T的实用程序类中(如ArrayList和TreeSet do)。T未声明,因此编译器对此表示不满。在方法类中声明它:
public static long distinctElements(T[] ar)
{
return Arrays.asList(ar).stream().distinct().count();
}
这里的问题是我不能使用'T[]ar'作为参数(Java说它不知道类型T)。我怎样才能解决这个问题?此函数位于不包含类型T的实用程序类中(如ArrayList和TreeSet do)。
T
未声明,因此编译器对此表示不满。在方法类中声明它:
public static <T> long distinctElements(T[] ar) {
return Arrays.asList(ar).stream().distinct().count();
}
公共静态长距离(T[]ar)
Java不知道什么是
T
。例如,它也是一个类的合法名称。因此,首先必须定义T
是一个类型变量
您可以将其放置在返回类型之前的角度中,如下所示:
public static <T> long distinctElements(T[] ar) { ... }
public static long distinctElements(Object[] ar) { ... }
可以使用与参数完全相同的数组调用它
public static <T> long distinctElements(T[] ar) { ... }
public static long distinctElements(Object[] ar) { ... }