Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从一种类型开始查找API链,并最终返回另一种类型?_Java - Fatal编程技术网

Java 如何从一种类型开始查找API链,并最终返回另一种类型?

Java 如何从一种类型开始查找API链,并最终返回另一种类型?,java,Java,例如,给定URL类型,String就是需要的类型。以下是一个有效链: new DataInputStream(new BufferedInputStream(URL.openStream()).readLine() 或者另一个依赖于Apache Commons IO库: IOUtils.toString(URL.openStream()) 为了找到这样的API链,似乎需要一个API索引来保存所有方法签名的记录。这种搜索有没有现成的解决方案?听起来你要求的是一种“六度分离”的类型转换?这是个好

例如,给定URL类型,String就是需要的类型。以下是一个有效链:

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库。