Создание экземпляра Groovy-класса в классе Java

#java #groovy

#java #groovy

Вопрос:

У меня есть класс groovy

 @Immutable
class StatusCode {
final int statusCode
}
  

Я хочу создать объект этого класса в другом классе Java, скажем, Test.Java . Но когда я использую,

 public class Test{
 StatusCode statusCode;
 public void setStatusCode(int statusCode)
 {
   this.statusCode = new StatusCode(statusCode);
 }
}
  

В нем говорится, что конструктор отсутствует. Как мне создать экземпляр этого объекта?

Комментарии:

1. не могли бы вы опубликовать подробности ошибки здесь?

Ответ №1:

Код Groovy может быть скомпилирован в байт-код Java с помощью groovyc. Это даст вам действительный класс Java, на который вы можете ссылаться из любого другого класса Java. Вам все равно нужно иметь groovy runtime JAR в вашем claspath.

Возможно, компилятор Groovy сгенерирует для вас нужный конструктор, но я не уверен. Если нет, вам нужно будет явно закодировать его в классе Groovy.

Комментарии:

1. Если вы используете groovy 1.8, вы можете использовать аннотацию TupleConstructor для добавления конструкторов для вас

2. @Tim — неизменяемая аннотация создает конструкторы кортежей, а также конструктор map.

3. @winstaan74 так оно и есть … извините за это :-/