2017-01-09 91 views
1

我想用一个将枚举作为形式参数的构造函数来定义一个类(因此只能传递符合枚举类型的参数)。以下是我已经(概括为我做大学的工作,不想抄袭):在Java中使用枚举创建构造函数

public class EnumThing 
{ 
private SomeConstant aConstant; 
private enum SomeConstant {CONSTANT1, CONSTANT2, CONSTANT3}; 

public EnumThing(SomeConstant thisConstant) 
{ 
    this.aConstant = thisConstant; 
} 

// Methods 

然而,当我尝试

EnumThing doodah = new EnumThing(CONSTANT1); 

我得到一个错误:无法找到符号 - 变量CONSTANT1

这是我第一次尝试使用枚举来完成任何事情。他们看起来非常强大,但似乎我错误地使用了它们。任何帮助非常感谢!

回答

2

全部工作示例(请注意,正确的用法是:SomeConstant.CONSTANT1):

public class EnumThing { 
    private SomeConstant aConstant; 

    private enum SomeConstant {CONSTANT1, CONSTANT2, CONSTANT3} 

    public EnumThing(SomeConstant thisConstant) { 
     this.aConstant = thisConstant; 
    } 

    public static void main(String[] args) { 
     EnumThing doodah = new EnumThing(SomeConstant.CONSTANT1); 
    } 
} 

请注意,您可以使用一个private枚举。但它只能在您的班级内访问(EnumThing)。

+0

我认为描述OP代码的问题通常更有用,并提供解决方案和解释,而不仅仅是提供一个“完整的工作示例”。 – Egor

+0

我已经完成了两个。 – Idos

+0

谢谢 - 我正在使用一个工作区,它封闭了主要方法的IDE(看起来他们认为它对我们来说有点高级,但实际上并不是这样)。你是说这是书面形式还是只是格式化? –

4

首先,你需要做的枚举public否则你不能访问它的类EnumThing之外:

public class EnumThing { 
    public enum SomeConstant {CONSTANT1, CONSTANT2, CONSTANT3} 

    // ... 
} 

然后,正确地访问枚举的成员:

EnumThing doodah = new EnumThing(EnumThing.SomeConstant.CONSTANT1); 
+0

谢谢!这固定它! –