0

运行下面的代码时出现编译错误: java: ..\JavaClass.java:8: cannot find symbol symbol : method 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);
    }
}
4

2 回答 2

1

IDEA 的外部构建中使用的 Groovy 编译器不支持此功能,请参阅https://issues.apache.org/jira/browse/GROOVY-4647

您可以仅使用 Groovy 代码中的 @Delegate 类,也可以在 Settings | 中关闭外部构建。编译器使用旧的构建机制。

于 2013-01-28T12:57:29.930 回答
0

你是如何运行/编译代码的?

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

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

    BigDecimalDelegated() {
      delegated = 0.0G
    }
}
于 2013-01-24T15:24:50.360 回答