java - 如何在java中设置公共静态最终类实例的值
问题描述
例子
public static final class MyClass{
private long id_;
public static final int MEMBER_ID_FIELD_NUMBER = 2;
private long startDate_;
....
}
//meanwhile in another class
class Abc {
...
public final void aFunc {
MyClass aaa = ???? // here is what I want to know how to set the class values
....
}
}
如何MyClass
在其他类中设置值?我试着做“初始化”
MyClass aaa = {
id_: 123123132,...
};
它只是给我 id_ `无法解析符号的错误。
我来自javascript背景,这就是我这样想的原因。知道如何使用 a 的部分/所有自定义默认值启动实例public static final class
吗?顺便说一句,如果背景故事可以帮助全面了解 --- 我这样做是为了测试特定类的方法,其中包括MyClass
. 这是一种模拟值的尝试,而不必重新创建整个 ActionBean 来测试一个方法。
解决方案
您有两个选项可以用值填充字段。一种选择是使用公共构造函数传递您要更新的所有参数:
public static final class MyClass{
private long id_;
public static final int MEMBER_ID_FIELD_NUMBER = 2;
private long startDate_;
public MyClass(long id_, long startDate_) {
this.id_ = id_;
this.startDate_ = startDate_;
}
}
你可以像下面这样使用它:
public final void aFunc {
MyClass objectA = new MyClass(1L, 23214112213L);
}
第二种选择是使用 setters: 每个字段的方法来添加值:
public static final class MyClass{
private long id_;
public static final int MEMBER_ID_FIELD_NUMBER = 2;
private long startDate_;
public void setID(long id_) {
this.id_ = id_;
}
public void setStartDate(long startDate_) {
this.startDate_ = startDate_;
}
}
您可以按如下方式使用它们:
public final void aFunc {
MyClass objectB = new MyClass();
objectB.setID(1L);
objectB.setStartDate(23214112213L);
}
但是你可以将它们结合起来。您可以拥有构造函数并使用setter。
- 对于您的私人领域,我假设您也需要吸气剂。
这些是您应该具备的基本知识的一部分。另外请记住,还有一些约定(命名等)