Легко устанавливать и получать данные между структурами объектов в Groovy - PullRequest
0 голосов
/ 02 декабря 2011

Внимание. Это общий вопрос для новичка в Groovy ... Я из Java, и я не хочу этого делать, если не обязан.

Я хотел бы создать отображение, которое будет легко проходить один граф объекта между другим графом объекта.

как:

customer.contact.address.identifier = incomingContact.location.address.idCode

Обе вышеперечисленные структуры объектов совершенно разные, иногда с разными типами данных. В приведенном выше фрагменте идентификатор представляет собой Long, а idCode - String. Кроме того, некоторые объекты являются нулевыми, поэтому я хочу создавать структуры на лету.

Как это можно улучшить с помощью возможностей замыканий и более функционального программирования в Groovy?

Первоначально я думал о решениях наследования или отражения, чтобы минимизировать условия if / else и экземпляр программирования на основе.

Любые мысли.

Вот некоторый псевдокод, который я запустил и который уже пахнет Java:

Вызов метода:

customer.contact.address.identifier = convert(incomingContact.location.address.idCode)

А вот и метод:

Long convert(Object fromObject) {

    //example usage that were prototyping for this method (generically)    
    //fromObject = Long.valueOf(5);
    println "convert has: [" + fromObject + "]"
    if(fromObject != null) {

      return fromObject;
    }

    return null;
 }

Приведенный выше фрагмент имеет сложность и проблемы сам по себе. С одной стороны, он выдает ошибку, когда я хочу вернуть вызывающей структуре нулевой объект, но "Long".

Непосредственная ошибка:

groovy.lang.MissingMethodException: Нет сигнатуры метода: customer.contact.address.setIdentifier () применим для типов аргументов: (ноль) значения: [ноль]

Моя альтернативная мысль - использовать инструмент отображения, такой как: http://dozer.sourceforge.net/ и позволить ему обрабатывать обход обоих графиков, но это снова java, что я и хотел, чтобы это отличное решение с динамическим типом.

1 Ответ

1 голос
/ 02 декабря 2011

Если вы просто хотите связать свойства одного объекта с другим, функции Groovy вам не сильно помогут.Может быть стоит посмотреть что-то вроде Dozer .

Кстати, вот Groovier способ написать код выше:

Long convert(fromObject) {

  println "convert has: [" + fromObject + "]"
  fromObject as Long
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...