【问题标题】:Declare Generic method in a "normal" class and its return [duplicate]在“普通”类中声明通用方法及其返回[重复]
【发布时间】:2020-10-29 22:08:41
【问题描述】:

我需要一个包含两个泛型参数的方法的非泛型类。在这种方法中,我的目标是比较两个通用参数并返回更大的值。我该怎么做?

public class generic <T extends Comparable<T>>{

    public T Max( T pv, T sv){
        if(pv.compareTo(sv)>=0){
            return pv;
        }else {
            return sv;
        }
    }

    public static void main(String[]args){
        generic g = new generic();
        System.out.println(g.Max( 2, 7));
    }
}

【问题讨论】:

  • 为什么不Collections.max(Arrays.asList(foo, bar));?或者,其他方式...基本上,您可以使用泛型方法来做到这一点,不需要泛型 class
  • @AndyTurner "不需要通用的 class" 我很确定他们理解这一点,并且不想要,但不知道语法构建它。
  • @Michael ok:但是“通用方法”这个词是对finding the syntax 的一个很好的推动。

标签: java generics comparable compareto


【解决方案1】:

只要把它移到方法声明中

public class Generic {

    public <T extends Comparable<T>> T max( T pv, T sv){
        if (pv.compareTo(sv) >= 0) {
            return pv;
        } else {
            return sv;
        }
    }

    public static void main(String[]args){
        Generic g = new Generic();
        System.out.println(g.max(2, 7));
    }
}

该方法也可以是静态的,因为它不依赖于任何状态。这会让调用更容易

System.out.println(max(2, 7));

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多