Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generics in Java: How do I make this example work?

Tags:

java

generics

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

I got this examle in Java Documentation. When i write extends Comparable, how can i tell the compiler what is type? I think i should instantiate T in <T extends Comparable<T>>, but how?


2 Answers

Just change the int to Integer and remove that ugly <Integer> inside your print statement.

Integer[] array = new Integer[3];
array[0] = 3;
array[1] = 2;
array[2] = 1;
System.out.println(countGreaterThan(array, 1));
like image 197
adarshr Avatar answered Jun 23 '26 18:06

adarshr


I would arrange this so you can use varargs

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));
like image 26
Peter Lawrey Avatar answered Jun 23 '26 18:06

Peter Lawrey