在下面的代碼示例中,我試圖測試父類中枚舉的值。我得到的錯誤是「p.theEnum無法解析或不是字段。」,但它與父類中用於測試值的顯然是相同的代碼(顯然沒有顯示p)。Java中父母的枚舉
我哪裏錯了? :)
public class theParent {
protected static enum theEnum { VAL1, VAL2, VAL3 };
private theEnum enumValue = theEnum.VAL1;
theParent() { this.theChild = new theChild(this); this.theChild.start(); }
class theChild {
private parentReference p;
public theChild (theParent parent) { this.p = parent; }
public void run() {
// How do I access theEnum here?
if (p.enumValue == p.theEnum.VAL1) { }
}
}
}
啊歡呼聲。我遇到的問題是Enum實際上被稱爲State,它試圖使用Thread.State,因此存在p.theEnum而不僅僅是Enum :) 此外,對編譯不足感到抱歉。我只知道一些Java(我是一個PHP人學習它),所以我只是在textarea中盡力而爲:P我錯過了什麼? – JoeC 2010-08-06 09:21:00
@JoeC:最好在IDE中提供簡短但完整的示例,以便您可以檢查它們。在這種情況下,你在'theChild'上調用'start',這是無效的,並且你有一個'parentReference'類型的變量而不是'theParent'。您還沒有聲明一個名爲'theChild'的字段,但是您在父構造函數中指定了它。我想也許還有其他人 - 不確定。另外,我會建議使用反映Java命名約定的名稱,因爲這會讓古怪的事物更加突出。 – 2010-08-06 09:38:52