如果存在具有相同名称的内部枚举,如何访问枚举

时间:2015-05-26 10:12:24

标签: java enums

无法访问枚举类外的枚举值。

如何访问枚举常量,如Reddel,Jonathan,Goldendel等

enum Apple{
    Reddel,Jonathan,Goldendel,Winesap,Cortland;
}


public class Test{
    enum Apple{
        Seb,Majj,Dlred,Wipe,Cland;
    }
    public static void main(String s[]){
        //here I want to access enumeration constant from Apple outside Test.
        //Apple.Winesap
        //Apple.Goldendel
        System.out.println(Apple.Winesap);

    }
}

4 个答案:

答案 0 :(得分:2)

如果您的课程包含在课程中,请说

package pkg;

然后使用pkg.Apple.Winesap将起作用。 (其他Apple的完全限定名称为pkg.Test.Apple。)

您还可以从pkg.Apple静态导入成员:

import static pkg.Apple.*;

然后使用Winesap

如果您正在使用默认包(没有包声明),那么内部Apple会影响另一个Apple并且您运气不佳。 (对于静态导入也是如此;您无法从默认包中的类静态导入成员。)

相关问题:

答案 1 :(得分:0)

应附加包名。

答案 2 :(得分:0)

您需要指定完整的包路径。我测试的以下代码正在编译:

xyz.reserve(3); // only revserve spaces for 3 elements, xyz.size() is still 0
xyz[0]=3; xyz[1]=1; xyz[2]=2; // UB
std::sort(xyz.begin(), xyz.end()); // There's nothing in xyz, so xyz.begin() == xyz.end(), so std::sort sort nothing here
std::cout<<xyz[0]<<xyz[1]<<xyz[2]<<"\n"; // UB again

答案 3 :(得分:0)

枚举在某个地方宣布,想象在ClassName.java。您可以使用ClassName.Apple.ReddelTest.Apple.Seb

分别推荐他们