Java: преобразование из конструкторов .NET - PullRequest
2 голосов
/ 12 августа 2010

Мы конвертируем некоторый код .NET 3.5 в Java (Android).

Этот код Java выдает ошибку:

Синтаксическая ошибка в токене "Главы", ожидается VariableDeclaratorIdпосле этого токена

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

Все типы верны.

Ответы [ 3 ]

5 голосов
/ 12 августа 2010

Вы используете .NET / C # способность инициализировать свойства во время создания вашего объекта.Чтобы сделать это в Java (или в более старом C #), вам придется проделать долгий путь.

Book book = new Book();
book.Chapters = 50;
// etc
this.add(book);
3 голосов
/ 12 августа 2010

Java не имеет инициализаторов объектов , поэтому этот синтаксис недопустим.

Вместо этого вы, вероятно, хотите сделать что-то вроде этого:

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 не имеет понятия "правильных" свойств , и типичная "хорошая" практика - использовать методы получения / установки и не называть ваши переменные, начиная с заглавных букв. Однако это не сработает для ваших Long и Short участников, и в целом эти практики в любом случае могут не принести никакой пользы в вашем сценарии.

1 голос
/ 12 августа 2010

Вы можете использовать трюк с инициализатором анонимного класса:

this.add (new Book() {{
    Chapters=50;
    OneBasedBookID = 1;
    Long = "Bahai";
    Short = "ba";
    Color = c;
    BookType = b;
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...