繁体   English   中英

枚举在类范围之外声明

[英]Enum declared outside class scope

我参加了这次面试,获得了一个软件开发人员的职位,他们给了我一些角落案例代码情况的测试,通常有4个选项可供选择。
其中一个问题在课堂范围之外宣布了一个枚举,我及时检查了“不编译”的答案并继续处理其他问题。 它是这样的:

enum Colors {BLUE,RED,GREEN}

class Test {
    //other code, not really important with my question
}

这段代码实际编译。
除了这样的访谈(可能或者)可能没有用,以确定一个人是否是一个好的开发人员,让我担心的是:为什么我会声明这样的枚举? 为什么我只能用enum做这个? 我做了一些测试,发现它在课堂内是可见的,但不是其他课程。

旁注:我得分很差:P。 我在理论上获得了最大值,但在角落情况代码情况下接近最低可能性。 我认为我不会得到这份工作。

这不仅仅是枚举。 枚举只是特殊类。 通常,您可以在一个文件中声明多个类(只要其中没有两个是公共的)。

不,没有访问修饰符,枚举是包私有的。 这意味着它只能由同一包中的类使用。 而且你不仅可以使用枚举来实现这一点,也可以将类设置为私有。

更多信息: http//java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

有时这个成语是明智的 - 例如,假设你有一个UploadHandler类(或类似的东西)可以从上传中返回一个状态。 将此状态实现为枚举似乎是完全可行的 - 并且因为枚举(例如UploadStatus )显然“属于”UploadHandler类,所以在同一源文件中声明它似乎很好。 (这当然假设它只需要是包私有的 - 如果它是真正的公共它需要在它自己的文件中声明,如果它不再是内部的东西可能是有意义的)。

碰巧,在这种情况下,我可能会使它成为一个静态的内部类,使关系更加明确。 但是在同一个源文件中声明多个类并不总是坏的,并且有时可以通过设置这是一个临界 - 平凡的子类的期望来帮助提高可读性。 (出于同样的原因,我不认为这样的课程应该做任何特别复杂或意外的事情。)

它实际上是在我的Eclipse上编译的! ;-)

允许多个类在同一个文件中。 限制是必须在具有相同名称的文件中定义公共类。

它的可见性是'package',所以它也应该在同一个包中的其他类中可见。

我能用枚举做什么?

您可以通过上述限制做任何您想做的事......

注意:虽然你错了,但你不应该感觉太糟糕,因为这也不是一个好习惯 在我们的CheckStyle配置中,像这样的同一文件中的外部类被视为错误!!

枚举指定可以分配给特定类型的常量值列表。 它可以在课堂内外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM