Java相当于以下静态只读C#代码?

时间:2010-09-28 03:19:17

标签: java .net static

所以,在C#中,我最喜欢做的事情之一是:

public class Foo
{
    public static readonly Bar1 = new Foo()
    {
        SomeProperty = 5,
        AnotherProperty = 7
    };


    public int SomeProperty
    {
         get;
         set;
    }

    public int AnotherProperty
    {
         get;
         set;
    }
}

我如何用Java写这个?我想我可以做一个静态的final字段,但是我不知道如何编写初始化代码。 Enums在Java领域是更好的选择吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

Java没有与C#对象初始值设定项相同的语法,因此您必须执行以下操作:

public class Foo {

  public static final Foo Bar1 = new Foo(5, 7);

  public Foo(int someProperty, int anotherProperty) {
    this.someProperty = someProperty;
    this.anotherProperty = anotherProperty;
  }

  public int someProperty;

  public int anotherProperty;
}

关于枚举问题的第二部分:如果不知道代码的用途是什么,就不可能说出来。

以下主题讨论了在Java中模拟命名参数的各种方法:Named Parameter idiom in Java

答案 1 :(得分:2)

这就是我用Java模拟它的方法。

public static Foo CONSTANT;

static {
    CONSTANT = new Foo("some", "arguments", false, 0);
    // you can set CONSTANT's properties here
    CONSTANT.x = y;
}

使用static块可以满足您的需求。

或者你可以这样做:

public static Foo CONSTANT = new Foo("some", "arguments", false, 0);