Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中类内的私有枚举位置_Java_Enums_Inner Classes - Fatal编程技术网

Java中类内的私有枚举位置

Java中类内的私有枚举位置,java,enums,inner-classes,Java,Enums,Inner Classes,在java中在类内声明枚举时,我见过以下两种方法: (一) (二) 哪个最常用?有什么约定吗?没有任何约定用于此,但从我所看到的情况来看,示例1更常用。我个人也是这样放置的。Java没有typedef语句(如C和C++)。要在Java中声明新类型,需要声明一个新类;然后可以将变量声明为该类的类型。Java还使用了前向引用,Java编译器比C编译器更聪明,因为它允许在定义方法之前调用方法。这消除了在程序文件中定义函数之前在头文件中声明函数的需要,就像在C中那样 我可以将我的enum放在任何地方,也

在java中在类内声明枚举时,我见过以下两种方法:

(一)

(二)


哪个最常用?有什么约定吗?

没有任何约定用于此,但从我所看到的情况来看,示例1更常用。我个人也是这样放置的。

Java没有
typedef
语句(如C和C++)。要在Java中声明新类型,需要声明一个新类;然后可以将变量声明为该类的类型。Java还使用了前向引用,Java编译器比C编译器更聪明,因为它允许在定义方法之前调用方法。这消除了在程序文件中定义函数之前在头文件中声明函数的需要,就像在C中那样

我可以将我的
enum
放在任何地方,也可以从任何地方访问它。参考示例

class CheckEnum{

    private void method1() {
        System.out.println(enumTest.test1);    
    }       
    private enum enumTest{
        test1
    }       
    private void method2() {
        System.out.println(enumTest.test1);
    }
}

我已检查,方法
method1
method2
都可以访问
enumTest

通常在Java中,嵌套数据类型(例如类、枚举)位于文件的底部

不过,简而言之,对于像您发布的私有枚举(感觉更像字段),我会选择#1


对于较长的枚举,我要么使用#2,要么将它们放在单独的文件中。

它们都没有问题。这更多的是一个意见问题,但我还是会去#1。

如果你换一种说法,有什么问题吗?@Rupesh我只是想知道这是否有一个惯例,或者这是一个个人偏好的问题。不,一点也不,为了更安全。
我不知道。
。请参考下面的答案。我更喜欢第一个答案。在使用它们之前,我更喜欢声明
enum
等。
public class MyClass {

    /* Static fields */

    /* Instance variables */

    /* Methods */

    private enum MyEnum {
        A, B, C;
    }
}
class CheckEnum{

    private void method1() {
        System.out.println(enumTest.test1);    
    }       
    private enum enumTest{
        test1
    }       
    private void method2() {
        System.out.println(enumTest.test1);
    }
}