Java 如何从一种类型开始查找API链,并最终返回另一种类型?
例如,给定URL类型,String就是需要的类型。以下是一个有效链:Java 如何从一种类型开始查找API链,并最终返回另一种类型?,java,Java,例如,给定URL类型,String就是需要的类型。以下是一个有效链: new DataInputStream(new BufferedInputStream(URL.openStream()).readLine() 或者另一个依赖于Apache Commons IO库: IOUtils.toString(URL.openStream()) 为了找到这样的API链,似乎需要一个API索引来保存所有方法签名的记录。这种搜索有没有现成的解决方案?听起来你要求的是一种“六度分离”的类型转换?这是个好
new DataInputStream(new BufferedInputStream(URL.openStream()).readLine()
或者另一个依赖于Apache Commons IO库:
IOUtils.toString(URL.openStream())
为了找到这样的API链,似乎需要一个API索引来保存所有方法签名的记录。这种搜索有没有现成的解决方案?听起来你要求的是一种“六度分离”的类型转换?这是个好主意。我不知道有谁构建了这样一个工具,但似乎利用Maven Central并将东西泵入一个可以遍历方法类型输入/输出的图形将是一个开始 我发现自己在Scala中做了很多“类型拉皮条”来做类似的事情,但仍然是手工做的。在Scala中使用隐式允许在调用站点代码中透明地执行此操作。它还允许使用新方法“丰富”现有类型(通常是final类型,如String) 因此,在Java中,对于一个简单的类型转换(例如字符串到URL),您有没有看过它附带了一些预打包的转换,以及添加您自己的转换的方法,很像(尽管比)Scala“pimping(拉皮条)更笨拙)
尽管如此,严格来说,您并没有将URL转换为字符串。您正在做的是将给定URL上的资源表示(希望是基于文本的)转换为字符串。这是一种合理的需求,但实际上并不是它们所代表的类型。您需要的是一个TextualResource(由URL构造)到字符串转换器。考虑到新的TextualResource类型希望做一些有用的事情,它可能会在其toString方法中实现您的第一个示例。您的问题不是很清楚。
URL.toString()
是否有效?你如何从一个到另一个?规则是什么?这是用于静态代码分析吗?@SotiriosDelimanolis yes URL.toString()也是有效的。目标是获得所有这些有效链。其中一个动机是在不熟悉新领域的API时节省API研究的时间。在这种情况下,答案是这样的链是无限的。你在哪里停?@SotiriosDelimanolis我同意如果允许像String.toString()这样的循环,就会有。你的第一段读到了我的心思。我希望最大限度地利用迄今为止积累的所有Java库。