我习惯于对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
我不知道为什么它会给出错误的错误消息,但尝试更惯用的方式来声明变量:
byte[] messageDigest = digest.digest();
Run Code Online (Sandbox Code Playgroud)
(我还强烈建议你不要在String.getBytes()没有指定字符编码的情况下使用.我假设你并不真的希望结果是特定于平台的.)
| 归档时间: |
|
| 查看次数: |
1488 次 |
| 最近记录: |