2016-08-11 6 views
1

У меня есть класс Path и Segment. Путь состоит из нескольких сегментов, и количество сегментов может меняться. Когда инициализируется новый Путь, я хочу иметь возможность добавлять 0 или несколько сегментов в объект пути. Это то, что я до сих пор:Инициализировать объект с 0 до нескольких объектов из другого класса java

public class Segment { 

    private final double distance; 
    private final double duration; 

    public Segment(double distance, double duration){ 
    this.distance = distance; 
    this.duration = duration; 
    } 
} 

public class Path { 

    public ArrayList<Segment> segments; 
    private Segment segment; 

    public Path(Segment segment){ 
    // parameter should be able to take in 0-multiple segment-objects 
    this.segment = segment; 
    this.segments = new ArrayList<Segment>(); 
    } 
} 

Главный пример метода:

public static void main(String[] args){ 
    Path path1 = new Path(segment1, segment2, segment3); 
    Path path2 = new Path(segment4); 
} 
+2

Вы можете использовать 'varargs' , 'Collection' или' Segment [] '. Кроме того, мне непонятно, о чем вы действительно спрашиваете. – SomeJavaGuy

+1

Почему can not u передать ArrayList конструктору? –

ответ

1

Вы можете использовать varargs:

import java.util.Arrays; 
import java.util.List; 

public class Path { 
    private final List<Segment> segments; 

    public Path(Segment... segs) { 
     this.segments = Arrays.asList(segs); 
    } 
} 

Тогда вы можете назвать его поставки ноль или более сегментов:

Segment seg1 = new Segment(2.0, 3.5); 
Segment seg2 = new Segment(1.4, 4.2); 

Path example1 = new Path();   // no segments 
Path example2 = new Path(seg1); 
Path example3 = new Path(seg1, seg2); // etc. 
+0

Спасибо! это отлично работало –