从返回各种类型的值创建列表

时间:2013-10-24 14:23:46

标签: java list

我有一个不同领域的课程。

public class Temporary
{
   private Integer id;
   private String name;
   private String value;

public Integer getId() {
      return id;
   }

   public void setId(Integer id) {
      this.id = id;
   }

public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public String getValue() {
      return value;
   }

   public void setValue(String value) {
      this.value = value;
   }
}

我正在创建一个测试,而我正在坚持创建一个列表,我需要制作一个列表,我不知道如何。

这是我的测试

@Test
   public void samepleList() throws Exception {

      Temporary temp = new Temporary();
      temp.setId(42);
      temp.setName("a");
      temp.setValue("b");
      temp.setId(36);
      temp.setName("c");
      temp.setValue("d");
      temp.setId(42);
      temp.setName("e");
      temp.setValue("f");

      List<Temporary> sampleList = Lists.newArrayList();
      sampleList.add(temp.getId();
      sampleList.add(temp.getName();
      sampleList.add(temp.getValue();

}

我的错误发生在sampleList.add(get.getId),正如它所说的

类型List中的方法add(Temporary)不适用于参数(整数)。

我如何修复它并将它们放入列表中

4 个答案:

答案 0 :(得分:2)

您只能将临时对象添加到List<Temporary>,而不是整数或字符串或其他内容。您需要重新阅读泛型和Java集合。

顺便说一句,这没有任何意义:

  Temporary temp = new Temporary(); 
  temp.setId(42);
  temp.setName("a");
  temp.setValue("b");
  temp.setId(36);
  temp.setName("c");
  temp.setValue("d");
  temp.setId(42);
  temp.setName("e");
  temp.setValue("f");

为什么要创建一个临时对象,然后只设置字段以便稍后覆盖这些字段?这一切都很有趣。

也许你想这样做:

List<Temporary> tempList = new ArrayList<>(); // create list

Temporary temp = new Temporary();  // create Temporary object
temp.setId(42);
temp.setName("a");
temp.setValue("b");
tempList.add(temp);  // add it to the list

temp = new Temporary();  // create new Temporary object
temp.setId(36);
temp.setName("c");
temp.setValue("d");
tempList.add(temp);  // add it to the list

temp = new Temporary();  // create new Temporary object
temp.setId(42);
temp.setName("e");
temp.setValue("f");
tempList.add(temp);  // add it to the list

答案 1 :(得分:1)

您的列表只能包含临时对象

  List<Temporary> sampleList = Lists.newArrayList();
      sampleList.add(temp);

稍后get temp。它包含您的所有值。喜欢

Temporary getttingTemp = sampleList.get(0); // 0 is index
Integet myIdIsBack = getttingTemp.getId(); // Yippe, got it

答案 2 :(得分:1)

如果要将特定类型添加到列表而不是Temporary个对象,则需要将列表声明更改为具有该特定类型,例如,如果要添加整数:

List<Integer> sampleList = new ArrayList<Integer>();

您不能声明列表以获取某些特定类型,然后将其传递给不同类型。除非你指定Object作为类型(这可能是一个坏主意)

否则,如果您想添加Temporary个对象并按原样保留列表声明,则需要:

sampleList.add(temp);

答案 3 :(得分:1)

您将sampleList声明为List<Temporary>,因此您只能将Temporary对象添加到sampleList。

 List<Temporary> sampleList = Lists.newArrayList();
 sampleList.add(temp);

您可以按如下方式迭代列表。

   for (Temporary t: sampleList ) {
        System.out.println(t.getId());
        System.out.println(t.getName());
        System.out.println(t.getValue());
   }