Java эквивалент следующего статического кода C # только для чтения? - PullRequest
4 голосов
/ 28 сентября 2010

Итак, в 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? Я думаю, что могу сделать статическое окончательное поле, однако я не уверен, как написать код инициализации. Будет ли Enums лучшим выбором на земле Java?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 28 сентября 2010

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: Идиома именованного параметра в Java

2 голосов
/ 28 сентября 2010

Вот так я бы подражал в 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...