Java 中多个 类 的 Varargs 问题

Issue with Varargs with multiple classes in Java

所以我在创建具有多个 类 的变量参数时遇到了问题。正如您在下面的代码中看到的那样,我只是试图以随机顺序获取多个城市和地区,并尝试打印出整个州的人口。除了问题是我不知道如何遍历我的 CAndD 数组以便将所有人口加在一起。

代码:

public class Main {
    public static void main(String args[]) {
        State S = new State("Florida", new District("Miami-Dade", 2752000),
                new City("Miami", 463347),
                new City("Tampa", 385430),
                new District("Broward", 1936000));
        System.out.println("The Population is: " + S.getPopulation());
    }
}

class CitiesAndDistricts {

}

class City extends CitiesAndDistricts{
    String name;
    int population;

    public City(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class District extends CitiesAndDistricts{
    String name;
    int population;

    public District(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class State {
    String name;
    int population;
    CitiesAndDistricts[] CAndD;

    public State(String name, CitiesAndDistricts ... entities) {
        this.name = name;
        CAndD = entities;
        for(int i = 0; i < CAndD.length; i++) {
            this.population += CAndD[i].population;
        }
    }

    public int getPopulation() {
        return population;
    }
}

如果有人能帮我解决这个问题那就太好了!

请看下面的代码,我已经将 population 变量从 City 和 District 移到了父 class:

public class Main {
    public static void main(String args[]) {
        State S = new State("Florida", new District("Miami-Dade", 2752000),
                new City("Miami", 463347),
                new City("Tampa", 385430),
                new District("Broward", 1936000));
        System.out.println("The Population is: " + S.getPopulation());
    }
}

class CitiesAndDistricts {
    int population;
}

class City extends CitiesAndDistricts{
    String name;


    public City(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class District extends CitiesAndDistricts{
    String name;

    public District(String name, int population) {
        this.name = name;
        this.population = population;
    }
}

class State {
    String name;
    int population;
    CitiesAndDistricts[] CAndD;

    public State(String name, CitiesAndDistricts ... entities) {
        this.name = name;
        CAndD = entities;
        for(int i = 0; i < CAndD.length; i++) {
            this.population += CAndD[i].population;
        }
    }

    public int getPopulation() {
        return population;
    }
}

设计一个空的父级class似乎不​​太好。在您的代码中,class 城市和地区相同。我假设您想知道地点的类型(城市或地区)。更好的解决方案是将子 class 的所有属性移动到父 class。 class CitiesAndDistricts 将是:

class CitiesAndDistricts {
    String name;
    int population;
    public CitiesAndDistricts(String name, int population} {
        this.name = name;
        this.population = population;
    }
}

从这位家长 class,您可以扩展到 class 城市和地区,如下所示:

class City extends CitiesAndDistricts{
    public City(String name, int population) {
        super(name, population);
    }
}

class District extends CitiesAndDistricts{
    public District(String name, int population) {
        super(name, population);
    }
}