所以,在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领域是更好的选择吗?
谢谢!
答案 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);