2010-09-28 1 views
4

Так, в C# один из моих любимых вещей, чтобы сделать следующее:Явный эквивалент следующего статического кода 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-земле?

Спасибо!

ответ

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

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); 
Смежные вопросы