【问题标题】:Java unchecked warnings add arraylistJava 未经检查的警告添加数组列表
【发布时间】:2013-05-17 14:46:07
【问题描述】:

这里是主程序

public class MainPerson {

public MainPerson(){}

public static void StartMainPerson()
{
    int i = 1;
    ArrayList<SortedPair> PersonList;
    ArrayList<Person> InitializedPersonList;        
    final int NUMBER_OF_PEOPLE = 6;

    PersonList = new ArrayList<>();
    InitializedPersonList = new ArrayList<>();

    InitializedPersonList.add(new Person( "Assaf Malki" , 1984));
    InitializedPersonList.add(new Person( "Assaf Malki" , 1984));
    InitializedPersonList.add(new Person( "Breanna Romberger" , 1920));
    InitializedPersonList.add(new Person( "Latrice Lane" , 1930));
    InitializedPersonList.add(new Person( "Bridgett Couch" , 1940));
    InitializedPersonList.add(new Person( "Roxane Sova" , 1950));
    InitializedPersonList.add(new Person( "Donnette Weston" , 1960));
    InitializedPersonList.add(new Person( "Milton Kopecky" , 1970));
    InitializedPersonList.add(new Person( "Rosella Vandoren" , 1980));
    InitializedPersonList.add(new Person( "Kayleigh Willimas" , 1990));
    InitializedPersonList.add(new Person( "Zula Lashua" , 2000));
    InitializedPersonList.add(new Person( "Ralph Baudoin" , 2010));
    InitializedPersonList.add(new Person( "Kenton Tseng" , 2005));
    InitializedPersonList.add(new Person( "Brendon Gilchrest" , 1995));

    Iterator itr = InitializedPersonList.iterator();

    while(itr.hasNext())
    {
        System.out.print("Pair " + i + " is " + itr.next() + " and " + itr.next() + ".\n");
        i = i + 1;
    }

    i = 0;
    System.out.print("\n");
    Iterator itr1 = InitializedPersonList.iterator();

    while(i < NUMBER_OF_PEOPLE)
    {

        try{
            System.out.println("Adding pair number " + (i+1) + "..");
            PersonList.add(new SortedPair((Person) itr1.next(), (Person) itr1.next()));
        }
        catch (IllegalPair e)
        {
            System.out.println("Invalid input, same person name, try again.");
            continue;
        }

        i = i + 1;

    }

    System.out.println("");

    for (SortedPair Value : PersonList)
    {
        System.out.println(Value);
    }
}

}

这是SortedPair

public class SortedPair <E extends Comparable<E>>
{
    E Max_Element;
    E Min_Element;

    public SortedPair(E FirstElement, E SecondElemnt) throws IllegalPair
    {
        int Compare_Result = FirstElement.compareTo(SecondElemnt);

        if (Compare_Result == 0)
        {
            Max_Element = null;
            Min_Element = null;
            throw new IllegalPair(FirstElement.toString(), SecondElemnt.toString());
        }
        else if (Compare_Result > 0)
        {
            Max_Element = FirstElement;
            Min_Element = SecondElemnt;
        }
        else 
        {
            Max_Element = SecondElemnt;
            Min_Element = FirstElement;

        }
    }

    public E getFirst()
    {
        return Max_Element;
    }

    public E getSecond()
    {
        return Min_Element;
    }

    @Override
    public String toString()
    {
        return String.format("%s is bigger then %s.", getFirst(), getSecond());
    }

}

我收到以下警告

MainPerson.java:60: warning: [unchecked] unchecked call to SortedPair(E,E) as a member of the raw type SortedPair
                PersonList.add(new SortedPair((Person) itr1.next(), (Person) itr1.next()));
                               ^
  where E is a type-variable:
    E extends Comparable<E> declared in class SortedPair

而且我不明白。

我尝试将ArrayList&lt;Person&gt; InitializedPersonList; 更改为ArrayList&lt;Comperable&gt; InitializedPersonList;,但没有成功。

有什么想法吗?

我觉得这个问题很清楚,我可以添加多少文字 Common..

【问题讨论】:

  • 你试过 InitializedPersonList = new ArrayList&lt;&gt;();InitializedPersonList = new ArrayList&lt;Person&gt;();
  • @Evans:这不会改变任何事情。
  • 您还应该收到有关Iterator的警告
  • 遵循 Java 命名约定将有助于使代码更具可读性...
  • 为什么?我究竟做错了什么?谢谢。

标签: java arraylist warnings unchecked


【解决方案1】:

你需要的是

List<SortedPair<Person>> PersonList = new ArrayList<SortedPair<Person>>();
List<Person> InitializedPersonList = new ArrayList<Person>();

【讨论】:

  • 是的。对此进行详细说明;您的 SortedPair 类是通用的;您需要声明参数类型(Person)
  • 我也试过这个。它给了我以下信息:类型参数Person不在类型变量E的范围内,其中E是类型变量:E扩展了类SortedPair中声明的Comparable
  • 您已将 SortedPair 的参数类型声明为“扩展 Comparable”;这是类型的要求。类型(Person)是否实现了 Comparable?
  • @user2102697 这意味着你的Person 类必须实现Comparable&lt;Person&gt;
  • 它确实公共类Person实现了Comparable{
【解决方案2】:

请使用正确的 Java 格式。变量从不以大写字母开头。这让其他 Java 开发人员阅读起来非常烦人。

顺便说一句:我认为 Marco 是对的。

【讨论】:

  • 作为旁注,您应该将此添加为评论,而不是答案,因为您不是在回答 OP 的问题,而是发表评论......没有冒犯))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多