2013-03-20 4 views
1

Как добавить вторичный конструктор к объекту Value (аннотированный с помощью @Data) в XTend (XText)?Дополнительный конструктор для объекта Xtend @Data Value

Я попытался следующие, но это не компилировать:

@Data class Dependency { 
    val String groupId; 
    val String artifactId; 
    val String version; 
    val String scope; 

    new(String groupId, String artifactId, String version) { 
     this(groupId, artifactId, version, null) 
    } 
} 

ответ

2

Это в настоящее время не представляется возможным. Если конструктор уже определен, аннотация @Data не создает новую. Вы можете использовать пользовательскую Active Annotation для адаптации класса данных к вашим потребностям.

+0

Прежде всего, спасибо за ответ. Было бы неплохо, чтобы аннотация @Data по-прежнему создавала первичный конструктор. Я действительно не вижу никакого сценария, где было бы полезно не создавать первичный конструктор. –

+0

Да, было бы разумно иметь возможность сделать это. Не могли бы вы подавать билет в Xtend bugzilla? –

+1

Запрос функции подан по адресу: https://bugs.eclipse.org/bugs/show_bug.cgi?id=404793 –

1

Хотя технически это не конструктор, вы можете создать фабричные методы для создания экземпляра класса данных несколькими способами.