【问题标题】:storing custom object with different primitive types in ArrayList在 ArrayList 中存储具有不同原始类型的自定义对象
【发布时间】:2017-02-18 21:14:40
【问题描述】:

我想创建一个包含三个整数和一个字符串的自定义对象,并将该对象存储在一个 arrayList 中,但我似乎遇到了问题,并且无法在线找到关于我的问题的文档。我在 fac.add 上遇到错误。这是代码

**对代码做了一些修改

package facility;
import dal.DataAccess;

public class FacilityInfo implements Facility {

private int buildingNo, roomNo, capacity;; 
private String type; //classroom, conference room, office, etc.

FacilityInfo(){}//default constructor

FacilityInfo(int b, int r, int c, String t){
    this.buildingNo = b; 
    this.roomNo = r; 
    this.capacity = c; 
    this.type = t; 
} 
package dal;
import java.util.*;

import facility.FacilityInfo;

public class DataAccess {
    List<FacilityInfo> fac = new ArrayList<FacilityInfo>();
    fac.add(new FacilityInfo (1,2,10,conference));//changed code here
}

【问题讨论】:

  • 在声明 3 个int 字段的行上多了一个分号。
  • 旁注:也不需要使用this.来引用全局变量,除非变量名与构造函数参数相同。
  • @MasterYushi 默认构造函数只有在没有定义的构造函数时才会自动完成。
  • @4castle 感谢您指出这一点

标签: java arrays custom-object


【解决方案1】:

这主要有两个原因。

首先,1,2,10,conference 不是 FacilityInfo 对象。您不能将FacilityInfo 的参数添加到List,您必须添加一个实际对象。

其次,你不能在代码块之外有语句,目前你是在类体中直接调用fac.add(...);

尝试类似:

public class DataAccess {
    List<FacilityInfo> fac = new ArrayList<FacilityInfo>();

    public void initializeFac() {
        fac.add(new FacilityInfo(1,2,10,"conference"));
        // etc.
    }
}

【讨论】:

  • 还有一个问题是fac.add 是如何在类体中被调用的,而不是在方法中。
  • 是的,方法调用需要在方法内部
  • 谢谢我这样做并为它创建了一个方法并将它放在那里而不是类主体,这很有效
  • @4castle 哎呀!感谢您指出了这一点。我已经更新了答案以包含这两个错误。
猜你喜欢
  • 1970-01-01
  • 2015-06-22
  • 2018-07-20
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
相关资源
最近更新 更多