Java:从.NET构造函数转换

时间:2010-08-12 02:02:15

标签: java .net constructor

我们正在将一些.NET 3.5代码转换为Java(Android)。

此Java代码提供错误:

令牌“章节”上的语法错误,此令牌后的VariableDeclaratorId

this.add (new Book() {Chapters=50, OneBasedBookID = 1, 
Long = "Bahai", Short = "ba", Color = c,   BookType = b; });

类型都是正确的。

3 个答案:

答案 0 :(得分:5)

您正在使用.NET / C#在创建对象时初始化属性的能力。要用Java(或旧的C#)来完成它,你将不得不做很长的事情。

Book book = new Book();
book.Chapters = 50;
// etc
this.add(book);

答案 1 :(得分:3)

Java没有object initializers,因此该语法无效。

相反,你可能希望做这样的事情:

Book book = new Book();

book.Chapters = 50;
book.OneBasedBookID = 1;
book.Long = "Bahai";
book.Short = "ba";
book.Color = c;
book.BookType = b;

this.add(book);

另请注意,Java也没有"proper" properties的概念,典型的“好”做法是使用getter / setter,而不是以大写字母开头命名变量。但这对您的LongShort成员无效,总体而言,这些做法可能无法为您的方案提供任何价值。

答案 2 :(得分:1)

您可以使用匿名类初始化技巧:

this.add (new Book() {{
    Chapters=50;
    OneBasedBookID = 1;
    Long = "Bahai";
    Short = "ba";
    Color = c;
    BookType = b;
}});