Java中的泛型:如何使这个示例工作? 主类{ 公共静态void main(字符串[]args){ int[]数组=新的int[3]; 数组[0]=3; 数组[1]=2; 数组[2]=1; System.out.println(countgreater大于(数组,1)); } 静态整数计数大于(T[]数组,T元素){ 整数计数=0; 对于(T e:anArray) 如果(例如,与(元素)>0相比) ++计数; 返回计数; } }

Java中的泛型:如何使这个示例工作? 主类{ 公共静态void main(字符串[]args){ int[]数组=新的int[3]; 数组[0]=3; 数组[1]=2; 数组[2]=1; System.out.println(countgreater大于(数组,1)); } 静态整数计数大于(T[]数组,T元素){ 整数计数=0; 对于(T e:anArray) 如果(例如,与(元素)>0相比) ++计数; 返回计数; } },java,generics,Java,Generics,我参加了考试。当我写扩展比较时,我如何告诉编译器什么是类型? 我想我应该在中实例化T,但是如何实例化呢?只需将int更改为Integer并删除print语句中丑陋的 class main{ public static void main(String[] args){ int[] array = new int[3]; array[0]=3; array[1]=2; array[2]=1; System.out.println(<Integer>countGre

我参加了考试。当我写扩展比较时,我如何告诉编译器什么是类型?
我想我应该在
中实例化T,但是如何实例化呢?

只需将
int
更改为
Integer
并删除print语句中丑陋的

class main{
 public static void main(String[] args){
  int[] array = new int[3];
  array[0]=3;
  array[1]=2;
  array[2]=1;
  System.out.println(<Integer>countGreaterThan(array,1));
 }
 static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
 int count = 0;
 for (T e : anArray)
    if (e.compareTo(elem) > 0)
        ++count;
    return count;
 }
}
主类{
公共静态void main(字符串[]args){
整数[]数组=新整数[3];
数组[0]=3;
数组[1]=2;
数组[2]=1;
System.out.println(countgreater大于(数组,1));
}
静态整数计数大于(T[]数组,T元素){
整数计数=0;
对于(T e:anArray)
如果(例如,与(元素)>0相比)
++计数;
返回计数;
}
}

这就是你要找的吗?

我会安排好,这样你就可以使用varargs了

Integer[] array = new Integer[3];   
    array[0]=3;   
    array[1]=2;   
    array[2]=1;   
    System.out.println(countGreaterThan(array,1));  
静态整数计数大于(T元素,T…数组){
整数计数=0;
对于(T e:anArray)
如果(例如,与(元素)>0相比)
++计数;
返回计数;
}
}
系统输出println(计数大于(1,3,2,1));

不能将泛型与int、boolean、char等基本类型一起使用。。。。您必须使用对象包装器类(正如人们已经提到的)。@maba它还隐藏了必须使用
Integer
而不是
int
的丑陋,这很好。在另一个问题()中,我有另一个优雅的(IMO)解决方案,但没有得到太多的关注。。。
class main {
    public static void main(String[] args){
  Integer[] array = new Integer[3];
  array[0]=3;
  array[1]=2;
  array[2]=1;
  System.out.println(countGreaterThan(array,1));
 }

    static <T extends Comparable<T>> int countGreaterThan(T[] anArray, T elem) {
        int count = 0;
        for (T e : anArray)
            if (e.compareTo(elem) > 0)
                ++count;
        return count;
    }
}
Integer[] array = new Integer[3];   
    array[0]=3;   
    array[1]=2;   
    array[2]=1;   
    System.out.println(countGreaterThan(array,1));  
static <T extends Comparable<T>> int countGreaterThan(T elem, T... anArray) {
    int count = 0;
    for (T e : anArray)
        if (e.compareTo(elem) > 0)
            ++count;
    return count;
    }
}

System.out.println(countGreaterThan(1, 3,2,1));