无法使用java类中的groovy @Delegate生成的方法

时间:2013-01-24 14:59:02

标签: java groovy delegates compiler-errors intellij-idea

运行下面的代码时 我收到编译错误: java:.. \ JavaClass.java:8:找不到符号 symbol:方法add(java.math.BigDecimal) location:class BigDecimalDelegated

似乎为java编译器创建的groovy类的存根不包含委托方法。

任何想法?

考虑这些课程:

class BigDecimalDelegated  //groovy class
{
    @Delegate BigDecimal delegated;
    String data;
}

import org.junit.Test;
import java.math.BigDecimal;
public class JavaClass  //java class
{
    @Test
    public void temp()throws Exception
    {
        new BigDecimalDelegated().add(BigDecimal.TEN);
    }
}

2 个答案:

答案 0 :(得分:1)

IDEA外部版本中使用的Groovy编译器不支持此功能,请参阅http://jira.codehaus.org/browse/GROOVY-4647

您可以仅使用Groovy代码中的@Delegate类,也可以在“设置”中关闭外部版本编译器使用旧的构建机制。

答案 1 :(得分:0)

您如何运行/编译代码?

另外,我相信你需要在BigDecimalDelegated的构造函数中设置委托

class BigDecimalDelegated  //groovy class
{
    @Delegate BigDecimal delegated
    String data

    BigDecimalDelegated() {
      delegated = 0.0G
    }
}