例如,给定类型 URL,String 就是需要的类型。下面是一个有效的链:
new DataInputStream(new BufferedInputStream(URL.openStream()).readLine()
或者另一个依赖 Apache Commons IO 库的库:
IOUtils.toString(URL.openStream())
为了找到这样的 API 链,似乎需要一个保存所有方法签名记录的 API 索引。对于这种搜索是否有现有的解决方案?
最佳答案
听起来您正在要求类似“六度分离”的类型转换?这是个好主意。我不知道有人构建过这样的工具,但似乎利用 Maven Central 并将事物注入(inject)到可以遍历方法类型输入/输出的图表中将是一个开始。
我发现自己在 Scala 中做了很多“类型拉皮条”来完成类似的事情,但仍然是手动的。 Scala 中隐式的使用允许在调用站点代码中透明地发生这种情况。它还允许使用新方法“丰富”现有类型(通常是最终类型,如 String)。
因此,在 Java 中,对于简单的类型转换(例如字符串到 URL),您是否查看过 http://commons.apache.org/sandbox/commons-convert/它带有一些预先打包的转换,以及添加您自己的转换的方法,就像(尽管比)Scala“拉皮条”一样。
尽管如此,严格来说,您并没有将 URL 转换为字符串。您正在做的是将给定 URL 处的资源表示形式(希望是基于文本的)转换为字符串。这是一个合理的需求,但实际上并没有体现在它们所代表的类型中。您想要的是一个 TextualResource(用 URL 构造)到 String 转换器。鉴于新的 TextualResource 类型想要做一些有用的事情,它可能会在其 toString 方法中实现您的第一个示例。
关于java - 如何找到从一种类型开始,最后返回另一种类型的API链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152050/