尝试约束到Number类的上限而不为整个类实现Comparable

时间:2015-10-11 21:21:31

标签: java generics arraylist static comparable

我试图这样做,以便我的班级仅限于上限数字。但是,当我尝试使用toString()方法获取最小值和最大值时,我收到以下消息:

  

MyList类型中最大的方法(ArrayList<T extends Comparable<T>>)不适用于参数(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接口?我感觉错误正在发生,因为我的方法是静态的,但我不确定。我只想使用Comparable for

smallest()

largest()

2 个答案:

答案 0 :(得分:2)

while( have_posts()) : the_post(); ?> <item> <title><?php the_title_rss(); ?></title> <link><?php the_permalink_rss() ?></link> <comments><?php comments_link_feed(); ?></comments> <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate> <dc:creator><![CDATA[<?php the_author(); ?>]]></dc:creator> <?php $pub_date= mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ...... $description = get_post(get_post_thumbnail_id())->post_content; // The Description $content = get_the_content_feed('rss2'); 方法依赖于toString您的班级没有强制执行的约束,这是没有意义的。

这样的事情可以用静态方法完成。

T

答案 1 :(得分:0)

这应该有效 -

? super

您也可以删除所有 C1 C2 C3 C4 R1 11 21 31 a1 R2 de bc cc b R3 dc ec dc c R4 gc gc gc d 部分;没有通配符,它​​应该可以正常工作。