Я объявил перечисление в моем классе следующим образом:
открытый класс MyBinaryTree {
private Node root;
public enum ORDER_TYPE {
IN_ORDER, POST_ORDER,
};
public void printTree(ORDER_TYPE order) {
//Printing tree here
}
}
и я пытался получить доступ к этому в другом классе
открытый класс Solution1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBinaryTree myTree = new MyBinaryTree();
myTree.printTree(myTree.ORDER_TYPE.POST_ORDER);
}
}
Проблема здесь в том, что если я использую объект экземпляра для доступа к перечислению ORDER_TYPE, я получаю ошибку во время компиляции: « ORDER_TYPE не может быть решена или не является полем »
Я снова проверил и изменил свой код, чтобы напрямую использовать имя класса в качестве квалификатора имени
public static void main(String[] args) {
MyBinaryTree myTree = new MyBinaryTree();
myTree.printTree(MyBinaryTree.ORDER_TYPE.POST_ORDER);
}
Это решило проблему - я считаю, что всякий раз, когда мы используем перечисление одного класса в другом - мы должны обращаться к нему через класс, как статический метод.