将枚举作为参数传递给方法?

时间:2010-07-19 14:24:51

标签: java enums parameters

我有一个抽象类Medium,其中一个datamembers是枚举。

private Taal talenOndertiteling[];

public enum Taal {
    NEDERLANDS, FRANS, DUITS, ENGELS, SPAANS, ITALIAANS
}
public Taal[] getTalenOndertiteling() {
    return talenOndertiteling;
}

public void setTalenOndertiteling(Taal[] talenOndertiteling) {
    this.talenOndertiteling = talenOndertiteling;
}

现在,当我尝试调用最后一个方法时:

            BD bd1 = new BD();
            bd1.setTalenOndertiteling(Taal.ENGELS);

我收到了一个错误。 (BD类实现了Medium类)关于如何调用该方法的任何想法?如果我想设置几个语言,我该怎么办呢?

谢谢!

5 个答案:

答案 0 :(得分:6)

您的方法接受Taal[],但您的调用会通过Taal。你有两个选择:

传递明确的Taal[]

bd1.setTalenOndertiteling(new Taal[] {Taal.ENGELS});

或者,更改方法声明以获取vararg参数并让编译器为您执行此操作:

public void setTalenOndertiteling(Taal... talenOndertiteling) {

答案 1 :(得分:2)

您必须创建一个包含一个元素的数组,并将其传递给方法:

bd1.setTalenOndertiteling(new Taal[]{Taal.ENGELS});

答案 2 :(得分:0)

setter需要一组Taal枚举。

所以正确使用是:

BD bd1 = new BD();
bd1.setTalenOndertiteling(new Taal[]{Taal.ENGELS});

或更详细:

BD bd1 = new BD();

Taal[] taals = new Taal[1];
taals[0] = Taal.ENGELS;

bd1.setTalenOndertiteling(taals);

答案 3 :(得分:0)

setTalenOrdertiteling获取一个数组。 所以正确的呼叫应该是:

bd1.setTalenOndertiteling(new Taal[] {Taal.ENGELS});

答案 4 :(得分:0)

两个问题: 1)setTalenOndertiteling()期待Taal数组,所以

bd.setTalenOndertiteling(new Taal[]{Taal.ENGELS};

2)Taal似乎是一个嵌套的枚举(在BD?中),没有特定的导入,你需要做

bd.setTalenOndertiteling(new BD.Taal[]{BD.Taal.ENGELS};