Enum的初始化顺序和一般的类不同
public enum Color {
RED("Red"),
BLACK("Black"),
WHITE("White");
private static int field = initStaticField();
Color(String name) {
System.out.println("Constructor: " + name);
}
private static int initStaticField() {
System.out.println("satic field ");
return 0;
}
public static void main(String[] args) {
Color red = Color.RED;
}
}
Console:
Constructor: Red
Constructor: Black
Constructor: White
static field
public class NormalClass {
private static int field = initStaticField();
NormalClass() {
System.out.println("Constructor" );
}
private static int initStaticField() {
System.out.println("static field ");
return 0;
}
public static void main(String[] args) {
NormalClass c = new NormalClass();
}
}
Console:
static field
Constructor
分享到:
相关推荐
- 枚举可以作为类的静态成员,用于表示该类的状态或分类。 - 枚举在序列化和反序列化时会自动处理,不需要额外的代码。 - 枚举可以用来实现单例模式,因为每个枚举实例都是唯一的。 6. **枚举的优点** - 增强了...
枚举也可以有构造函数,但只能由Java编译器在枚举初始化时调用。枚举构造函数常用于初始化枚举常量的属性: ```java public enum Color { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF); private int hexCode...
- **静态初始化**:枚举的元素在类加载时会被初始化。 - **单例模式**:每个枚举元素都是一个单例。 #### 三、枚举的内部结构 枚举类型在编译后会被转换成一个特殊的类。例如,上面的`Color`枚举类型在编译后会...
枚举类型在Java中提供了丰富的功能,不仅能够定义一组固定的实例,还能通过继承`Enum`类获得许多便利的方法,使其在编码实践中非常实用。在编写涉及有限、预定义值的代码时,优先考虑使用枚举类型是一个良好的编程...
枚举构造函数主要用于初始化枚举实例的内部状态,但需要注意,构造函数不能被外部直接调用,只能在枚举实例的定义中使用。例如: ```java public enum Color { RED(1), GREEN(2), BLUE(3); private int value; ...
这里,`Status`枚举有两个实例,每个都有一个`description`属性,可以通过构造函数初始化,并提供了获取描述的方法。 在Spring Boot应用中,枚举可以作为控制器参数、服务方法返回值,甚至在数据库映射中使用。例如...
构造方法通常用于为枚举常量设置初始值或执行其他初始化操作。 **示例代码**: ```java enum Color { RED("红色"), GREEN("绿色"), BLUE("蓝色"); private String name; Color(String name) { this.name = ...
+ 代码块的执行顺序:静态初始化块 > 实例初始化块 > 构造器 五、关键字:final * final关键字的使用 + final用来修饰:变量、方法、类 + final变量:只能赋值一次,不能修改 + final方法:不能被子类覆盖 + ...
在枚举中,我们可以定义构造方法来初始化每个枚举实例。例如: ```java public enum WeekDay { Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri("Friday"), Sat("Saturday"), Sun(...
11. **内部类**:Java支持类的嵌套,内部类可以作为外部类的成员,有成员内部类、局部内部类、匿名内部类和静态内部类等。内部类可以访问外部类的私有成员,增加了代码的复杂性和灵活性。 12. **包(package)**:...
枚举类可以有构造函数,用于初始化枚举实例。例如: ```java public enum WeekDay { Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri("Friday"), Sat("Saturday"), Sun("Sunday"); ...
6. **静态成员与非静态成员**:静态成员在类加载时初始化,直接通过类名访问,整个类共享;非静态成员在对象创建时初始化,通过对象实例访问,每个实例有自己的副本。 7. **密封类(Sealed Class)**:用`sealed`...
- **初始化顺序**:父类属性初始化->父类构造方法->子类属性初始化->子类构造方法。 - 如果父类没有构造方法,子类构造方法会隐式调用父类的无参构造方法。 - 如果父类有构造方法,则子类必须显式调用父类的构造...
在给定的代码片段中,我们看到了三个不同的实验,它们涉及到C++编程语言中的类、枚举、构造函数、析构函数以及对象的初始化。以下是这些知识点的详细说明: 1. 枚举(Enum): 枚举是C++中用于定义一组命名常量的...
如果需要,枚举元素可以带有初始化参数,这相当于在枚举类中定义了一个构造器来初始化元素: ```java public enum Color { RED("红色", 0), BLUE("蓝色", 1), BLACK("黑色", 2); private String name; ...
6. 静态初始化块与构造器:在`Cups`和`Cup`类的示例中,静态初始化块(`static`代码块)会在类加载时执行一次,而构造器在创建对象时执行。当创建`Cups`类的对象时,会先执行静态初始化块,然后是`Cups`的构造器。...
最简单的单例实现方式是在类中创建一个私有的构造函数,并提供一个公共的静态方法来获取唯一的实例。这种方式在单线程环境下工作良好,但在多线程环境中可能会创建多个实例,因为它不考虑同步问题。 ```java ...
15. **枚举的常量工厂方法**:枚举类可以提供静态工厂方法来创建实例,这有助于控制枚举实例的创建,并提供额外的初始化逻辑。 以上只是“第七章高级类特性”中可能涵盖的一些关键点,具体的学习内容还会涉及到这些...
- 用于初始化类的静态成员,会在类加载时执行,且只执行一次。 - 示例:`static { System.out.println("静态代码块"); }` **13. final修饰** - `final`修饰的类不能被继承。 - `final`修饰的方法不能被子类覆盖。 ...