我正在尝试使我的类(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/