修改方法,使参数可以是实现Comparable的任何类型

Cha*_*621 6 java generics

我想修改以下方法,以便它的参数可以是实现Comparable接口的任何类型.方法的返回类型应与其参数变量的类型相同.

public static int max(int a, int b) {   
    if (a >b) 
        return a;  
    else 
        return b;
}
Run Code Online (Sandbox Code Playgroud)

所以在修改它时,我可以使用<T extends Comparable<T>>,但是我如何才能使返回类型相同?

ars*_*jii 7

你基本上想要这样的东西:

public static <T extends Comparable<T>> T max(T a, T b) {
    int n = a.compareTo(b);
    if (n > 0)
        return a;
    if (n < 0)
        return b;
    return a;
}
Run Code Online (Sandbox Code Playgroud)

您当然可以将此简化为以下内容(感谢@pickypg的通知):

public static <T extends Comparable<T>> T max(T a, T b) {
    return a.compareTo(b) < 1 ? b : a;
}
Run Code Online (Sandbox Code Playgroud)

  • 现在你得到我的+1.注意,你可以简化`return a.compareTo(b)<1?b:a;` (3认同)