java - 尝试限制 Number 类的上限而不为整个类实现 Comparable

标签 java generics arraylist static comparable

我正在尝试使我的类(class)仅受限于上限数字。但是,当我尝试执行 toString() 方法来获取最小值和最大值时,我收到以下消息:

The method largest(ArrayList<T extends Comparable<T>>) in the type MyList is not applicable for the arguments (ArrayList<T extends Number>)

package p07;

import java.util.ArrayList;

public class MyList<T extends Number>
{
    private ArrayList<T> l;

    public MyList(ArrayList<T> l)
    {
        this.l=l;
    }
    public void add(T x)
    {
        l.add(x);
    }
    public static <T extends Comparable<T> > T smallest(ArrayList<T> l)
    {
        T lowest=l.get(0);
        for(T index:l)
        {
            if(index.compareTo(lowest)<0)
            {
                lowest=index;
            }

        }
        return lowest;

    }
    public static <T extends Comparable<T> > T largest(ArrayList<T> l)
    {
        T largest=l.get(0);
        for(T index:l)
        {
            if(index.compareTo(largest)>0)
            {
                largest=index;
            }

        }
        return largest;

    }
    public final String toString()
    {
        String str;
        str="\nThe list is: ";
        str+="\n"+l.toString();
        str+="\nThe largest value is "+MyList.largest(l);
        str+="\nThe smallest value is "+MyList.smallest(l);
        return str;
    }

}

有什么方法可以让我的类限制在 Numbers 类的上限,而不必为整个类实现 Comparable 接口(interface)?我感觉发生错误是因为我的方法是静态的,但我不确定。我只想将 Comparable 用于

smallest()

largest()

最佳答案

您的 toString 方法依赖于 T 具有您的类未强制执行的绑定(bind)是没有意义的。

类似的事情可以使用静态方法来完成。

static <T extends Number & Comparable<? super T>> String getString(MyList<T> list) {
    ....
}

关于java - 尝试限制 Number 类的上限而不为整个类实现 Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33070245/

相关文章:

java - 如何在android中制作自定义Arrays.asList

java - 仅通过一个 SocketChannel 发送多条消息

java - 类型删除在Java Map类中不起作用

java - 如何将对象从一张 map 放到另一张 map 上?

java - ArrayList 排序锦标赛名次

java - 使用ArrayList处理一对多关系

java - JSF 表单不执行操作,因为组合框

java - 顺序写入文件与批量写入文件

c# - 当你只知道通用基类的类型时,如何找到通用基类的派生类?

android - BaseExpandableListAdapter RuntimeError NullPointerException