如何在Java中编写等效于匿名类的内容?

mstrap:

这更多是与接口/功能/闭合/类型/ ...有关的通用Go问题,但具有执行I / O的具体用例。

给定一个io.Reader变量,我想io.ReadCloser使用自定义Close()实现创建一个

var file os.File
file = ... // some File which needs to be closed

var reader io.Reader
reader = ... // get Reader from somewhere

var readCloser io.ReadCloser
readCloser = ... // how to create a ReadCloser here?

在Java中,我会写一些类似的东西:

readCloser = new io.ReadCloser() {
    Read(p []byte) {
        reader.Read(p);
    }

    Close() {
        // my custom close implementation
        file.Close()
    }    
}

// now pass readCloser around as needed

如何用Go做到这一点?

weima :

从中得到提示http.HandlerFunc,我可以想到以下内容

package main

import (
    "bytes"
    "fmt"
    "io"
    "strings"
)

// ReadData reads data from an io.Reader
func ReadData(r io.Reader) {
    buf := new(bytes.Buffer)
    buf.ReadFrom(r)
    s := buf.String()
    fmt.Printf("read : %s \n", s)
}

// ReaderFunc takes a function and returns io.Reader
type ReaderFunc func([]byte) (int, error)

func (r ReaderFunc) Read(b []byte) (int, error) {
    return r(b)
}

func main() {
    // invoking ReadData with a regular io.Reader
    r := strings.NewReader("data 123")
    ReadData(r)

    // invoking ReadData with an anonymous io.Reader
    r = strings.NewReader("data 456")
    ReadData(ReaderFunc(func(b []byte) (int, error) {
        return r.Read(b)
    }))
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

等效于扩展Java中的最终类

在C#中创建匿名对象的Java等效于什么?

如何在Java中生成等效于Python示例的HMAC?

您将如何在Rust中编写与此C ++循环等效的内容

如何在Swift中设置NSButton的key等效于NSDownArrowFunctionKey

如何在 BQ 中的数组字段上等效于“distinct”?

如何在React中输入注释:html <!-->等效于什么?

如何在Java中引用匿名类实例?

等效于ungetc在Java中

在C#单元测试中,如何等效于Java的Spy(而不是Mock)仅模拟类中的某些方法?

C#等效于Java Robot类

Java等效于C#匿名数组和列表?

给定任何Java编译程序,是否可以在Clojure中编写等效于字节码的版本?

如何在Java中编写传递类名的函数?

如何在java pojo类中编写枚举列?

如何在匿名类中添加if语句?

如何在python中实现等效于C ++类成员的功能,该成员返回指向另一个类的指针?

如何在Java 1.7中编写等效的lambda表达式?

如何在普通类中使用等效于__post_init__方法的方法?

如何在SML / NJ中编写一个函数,将列表中的元素排序为等效类?

在 bash 中编写等效于 Python 的输入函数

尝试在Excel中编写等效于SUMIFs功能的Python

等效于C#中的Java包

在Java中,“同步”是否等效于“同步(this)”?

在Swift中Java的instanceof等效于什么?

Java中的javascript setTimeout等效于什么?

.NET中的Java applet等效于什么?

Java在Serde中的瞬态等效于什么?

等效于Java 8中的LINQ