繁体   English   中英

Java - 将值传递给构造函数而无需一一输入值

[英]Java - Passing values to a constructor without entering the values one by one

我需要创建一个 TReadings 列表,这些列表将填充我将从 Excel 文件中一一提取的值。

有问题的班级:

public class TReadings {
long zone1;
long zone2;
.
.
.
long zone99;

// constructor
public TReadings (long zone1, long zone2 ... long zone99){
this.zone1=zone1;
.
.
.
}
}

由于这个构造函数有 99 个参数,有没有什么方法可以将值(或列表)传递给构造函数,而无需一一输入所有值?

如果TReadings在您的控制范围内,即您可以更改它,您可以像这样定义一个构造函数:

public class TReadings {
   List<Long> zoneList;

   TReadings(List<Long> zoneList){
      this.zoneList = zoneList;
   }
}

您可以使用可变参数。

public class TReadings {
    List<Long> zoneList = new ArrayList<Long>();
    
    public TReadings(Long... values) {
        for (Long val : values)
            zoneList.add(val);
    }
}

然后你可以通过使用参数数量来调用它:

new TReadings(1L, 23L);
new TReadings(1L, 22L, 44L, 87L, 5L);
new TReadings(99L);
public class TReadings {
    
    List<Long> zones;

    public TReadings(List<Long> zones) {
        this.zones = zones;
    }      
}

//and to call it
List<Long> zones = new ArrayList<>();
zones.add(1);
//...
zones.add(99);
TReadings readings = new TReadings(zones);

例如:

public class TReadings {
    private List<Long> zoneList;

    public addZone(Long zone) {
        zoneList.add(zone);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM