编辑:很抱歉我之前的问题,final 关键字会让您感到困惑,这是不合适的。也为我糟糕的英语感到抱歉。
-----问题------
假设我有一个没有任何构造函数的模型类,因为我需要在许多不同的逻辑中对其进行初始化。 但是我有一个notnull关键字。
public class Model {
public notnull String name;
public notnull String address;
public notnull int age;
}
我需要在不同的地方使用它,但要不断检查是否所有 notnull 字段都在编译时初始化
Model m = new Model();
m.name = "Hello";
m.age = 15;
// syntax error, you should set Model.address
或者
Model m1 = new Model();
m1.address = "World";
m1.age = 20;
// syntax error, you should set Model.name
我如何在 Java 中实现它? 谢谢。
最佳答案
assume I have a model class without any constractor
这是不可能的。每个类都有一个构造函数。如果你不定义一个,你最终会得到默认的构造函数。在你的情况下:
public Model() {
super();
}
checking if all final field were initialized
首先final字段必须要初始化,否则编译器编译不通过。因此,您必须必须初始化 final 字段:
- 在构造函数中
- 声明final字段时
构造函数初始化
public final String name;
public final int age;
public Model() {
this.name = "Hello";
this.age = 13;
}
声明初始化
public final String name = "Hello";
public final int age = 13;
public Model() {
super();
}
关于java - 确保字段从构造函数中初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751984/