小编cyb*_*oft的帖子

ClosureParams:如何在groovy中为闭包参数指定泛型类型

我在Java中有以下方法:

public void myMethod(
        @ClosureParams(
                value = SimpleType.class,
                options = {
                        "java.util.Map"
                }
        ) Closure<String> closure
) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

它必须@ClosureParams为 IDEA 中的静态类型检查器和类型推断指定闭包的参数类型。

在 Groovy 脚本中,我按如下方式调用此方法:

myMethod { Map<String, Object> doc ->
    ...
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好。但是当我尝试在 java 方法中指定闭包的泛型类型时:java.util.Map

public void myMethod(
        @ClosureParams(
                value = SimpleType.class,
                options = {
                        "java.util.Map<java.lang.String,java.lang.Object>" // <-- added here
                }
        ) Closure<String> closure
) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

groovy 的静态类型检查器失败并出现错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
C:\myproject\script.groovy: 1: Expected parameter of type java.util.Map<java.lang.String,java.lang.Object> but got java.util.Map <String, …
Run Code Online (Sandbox Code Playgroud)

java groovy closures

5
推荐指数
1
解决办法
1419
查看次数

如何知道已启动程序(进程)的args?

如何以编程方式(win api)知道args列表,在程序启动时通过命令行给出?

windows winapi

0
推荐指数
1
解决办法
54
查看次数

ImageIO.read 关闭输入流

我将图像和其他数据写入二进制文件。当我通过 ImageIO.read(InputStream) 从该文件读取图像时,它读取图像,没问题,但方法关闭给定的输入流,我无法继续读取其他数据。

  1. 为什么会这样?
  2. 那么如何在不关闭流的情况下读取图像?

编辑:这是将图像和字符串写入文件后的简单代码:

File f = new File("test.bin");
if(f.exists())
f.delete();
f.createNewFile();
DataOutputStream os = new DataOutputStream(new FileOutputStream(f));
BufferedImage img = ImageIO.read(new File("test.jpg"));
ImageIO.write(img, "jpg", os);
os.writeUTF("test string after image");
os.close();
Run Code Online (Sandbox Code Playgroud)

以及读取所有内容的代码:

DataInputStream is = new DataInputStream(new FileInputStream(f));
BufferedImage img = ImageIO.read(is);
String s = is.readUTF(); // on this line EOFException occurs
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

NetBeans 输出:

Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(DataInputStream.java:340)
at java.io.DataInputStream.readUTF(DataInputStream.java:589)
at java.io.DataInputStream.readUTF(DataInputStream.java:564)
at mediamanager.Main.test(Main.java:105)
at mediamanager.Main.main(Main.java:44)
Run Code Online (Sandbox Code Playgroud)

可能是我做错了什么?

java image stream

0
推荐指数
1
解决办法
4846
查看次数

标签 统计

java ×2

closures ×1

groovy ×1

image ×1

stream ×1

winapi ×1

windows ×1