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));