groovy错误:原始类型文字:byte不能用作方法名称

时间:2011-11-20 09:53:58

标签: java groovy

我习惯在shell上进行python风格的REPL测试,我正在学习Java。我最近了解到几乎所有Java代码都可以通过groovy以REPL方式执行。到目前为止,groovy控制台帮助我快速测试了我的Java代码片段。

我试图在groovy控制台中运行以下Java代码(我碰巧从another Stackoverflow question获得):

String md5(String s)
{
        MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i=0; i<messageDigest.length; i++)
        hexString.append(Integer.toHexString(0xFF & messageDigest[i]));

        return hexString.toString();
}

String md5hash = md5("a test message");

当我尝试执行此操作时,收到以下错误消息:

原始类型文字:字节不能用作行的方法名称:5列:13。文件:ConsoleScript0 at line:6,column:13

我在SO和其他地方搜索了错误消息,但我无法获得任何线索。它似乎是有效的Java代码,为什么groovy认为我试图使用“byte”作为方法名?

我正在使用Groovy版本:1.8.4 JVM:1.6.0_26

1 个答案:

答案 0 :(得分:7)

我不知道为什么它会给出错误的错误消息,但尝试使用更惯用的方式来声明变量:

byte[] messageDigest = digest.digest();

(我也强烈建议你使用String.getBytes()而不指定字符编码。我假设你真的不想要结果是特定于平台的。)