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

non*_*ing 1 java groovy

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

我试图在groovy控制台中运行以下Java代码(我碰巧从另一个Stackoverflow问题得到):

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");
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Jon*_*eet 7

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

byte[] messageDigest = digest.digest();
Run Code Online (Sandbox Code Playgroud)

(我还强烈建议你不要在String.getBytes()没有指定字符编码的情况下使用.我假设你并不真的希望结果是特定于平台的.)