Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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_Class_Static_Final - Fatal编程技术网

如何在java中为公共静态最终类实例设置值

如何在java中为公共静态最终类实例设置值,java,class,static,final,Java,Class,Static,Final,范例 公共静态最终类MyClass{ 私人长id; 公共静态最终整数成员\u ID\u字段\u编号=2; 私人长启动日期; .... } //同时在另一节课上 Abc班{ ... 公开终审法院{ MyClass aaa=????//我想知道如何设置类值 .... } } 如何在另一个类中设置MyClass的值?我试着像这样做“初始化” 它只是给了我一个id不能解析符号的错误 我来自javascript背景,这就是为什么我会这样想。您知道如何使用公共静态最终类的部分/所有自定义默认值启动实例吗?

范例

公共静态最终类MyClass{
私人长id;
公共静态最终整数成员\u ID\u字段\u编号=2;
私人长启动日期;
....
}
//同时在另一节课上
Abc班{
...
公开终审法院{
MyClass aaa=????//我想知道如何设置类值
....
}
}
如何在另一个类中设置
MyClass
的值?我试着像这样做“初始化”

它只是给了我一个id不能解析符号的错误


我来自javascript背景,这就是为什么我会这样想。您知道如何使用
公共静态最终类的部分/所有自定义默认值启动实例吗?顺便说一句,如果背景故事有助于了解全貌,我这样做是为了测试一个特定类的方法,其中包括一个
MyClass
的实例。这是一种模拟值的尝试,而不是必须重新创建整个ActionBean来测试一个方法。

如果它有默认构造函数(没有任何参数的构造函数),则可以首先创建对象,而不提供字段值,并使用setter(如果存在)设置它,如下所示:

如果没有默认构造函数,则需要在对象创建期间提供所有参数,如下所示:

public final void aFunc {
        MyClass aaa = new MyClass(1,2,3);
        ....
}

有多种方法可以创建对象实例并为字段赋值:

  • 调用设置程序方法:

    公共静态最终类MyClass{
    私人长id;
    公共无效集合id(长id){
    this.id=id;
    }
    }
    
    MyClass aaa=新的MyClass();
    aaa.setId(123132);
    
  • 使用带参数的构造函数:

    公共静态最终类MyClass{
    私人长id;
    公共MyClass(长id){
    this.id=id;
    }
    }
    
    MyClass aaa=新的MyClass(123132);
    
  • 使用公共字段。虽然不推荐,但这是JavaScript所做的:

    公共静态最终类MyClass{
    公共长id;
    }
    
    MyClass aaa=新的MyClass();
    aaa.id=123132;
    
  • 使用生成器:

    公共静态最终类MyClass{
    私人长id;
    私有MyClass(长id){
    this.id=id;
    }
    公共静态类生成器{
    私人长id;
    公共无效id(长id){
    this.id=id;
    }
    公共MyClass构建(){
    MyClass x=新的MyClass();
    x、 id=this.id;
    返回x;
    }
    }
    }
    
    MyClass aaa=新建MyClass.Builder()
    .id(123132)
    .build();
    

  • 有两个选项可以用值填充字段。 一个选项是使用公共构造函数传递所有要更新的参数:

    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);
    }
    
    public final void aFunc {
        MyClass objectB = new MyClass();
        objectB.setID(1L);
        objectB.setStartDate(23214112213L);
    }
    
    第二个选项是使用setters:methodper字段来增加值:

    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 objectA = new MyClass(1L, 23214112213L);
    }
    
    public final void aFunc {
        MyClass objectB = new MyClass();
        objectB.setID(1L);
        objectB.setStartDate(23214112213L);
    }
    
    但是你可以把它们结合起来。您可以使用构造函数和设置器

    看到和 看

    • 对于你的私人领域,我想你也需要getter

    这些是你应该具备的基本知识的一部分。此外,请记住还有一些约定(命名等)

    id\ucode>是私有的(并且有一个奇怪的名称,imho),您不能从其他类访问它。
    MyClass
    的职责是为其客户机提供一种更改
    id\ucode>值的方法(通过构造函数或方法)。您需要进一步了解java编程语言,因为它不同于javascript。不要期望javascript语言范例应用于java。