Java generics – a comparable interface

In the following code, the comparable interface is used to ensure that X and y should have the same reference type, but when V is extended to t, V should be the same as the type of T or the subclass of T. what is the focus of using the comparable interface

public class Generics_13 {

    static <T extends Comparable<T>,V extends T> boolean isIn(T x,V[] y) {
        for(int i = 0;i < y.length;i++) 
            if(x.equals(y[i])) return true;

        return false;
    }

    public static void main(String[] args) {
        Integer nums[] = {10,20,30};

        if(isIn(10,nums))
            System.out.println("10 belongs to the array");
        if(!isIn(60,nums))
            System.out.println("70 doesnt belong to the array");

        String arr[] = {"Neeraj","Parth","Ritum"};
        if(!isIn("abc",arr))
            System.out.println("abc doesnt belongs to the array");

        /*if(isIn("String",nums))      //  illegal
            System.out.println("This wont compile");
        */
    }
}

Solution

The current use of generics is not really meaningful because comparable methods have not been used, which means that you can simply remove the extensions declaration

In addition, type V is not used because you can simply replace it with t without breaking your logic Therefore, the final results are as follows:

public class Generics_13 {
    static <T> boolean isIn(T x,T[] y) {
        for(int i = 0;i < y.length;i++) 
           if(x.equals(y[i])) return true;

        return false;
    }

    // main() etc follow here
}

But now we have the stream API in java-8. You can use the following code snippet to achieve the same purpose:

static <T> boolean isIn(T x,T[] y) {
    return Arrays.stream(y).anyMatch(i -> i.equals(x));
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>