0

我有一堂不同领域的课。

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) 不适用于参数 (Integer)。

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

4

4 回答 4

2

您只能将 Temporary 对象添加到 aList<Temporary>中,而不是 ints 或 Strings 或诸如此类的东西。您需要重新阅读泛型和 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");

为什么要创建一个 Temporary 对象,然后只设置字段以便稍后覆盖字段?这整件事闻起来很有趣。

也许你想做的是:

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
于 2013-10-24T14:24:56.900 回答
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
于 2013-10-24T14:25:39.480 回答
1

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

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

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

否则,如果要添加Temporary对象并保持列表声明不变,则需要:

sampleList.add(temp);
于 2013-10-24T14:25:51.803 回答
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());
   }
于 2013-10-24T14:26:46.243 回答