gpt4 book ai didi

java - 为什么 Guava Resources 类没有方法的 String 版本?

转载 作者:行者123 更新时间:2023-12-03 21:28:57 24 4
gpt4 key购买 nike

构造 Resources.toString(Resources.getResource("foo"), Charsets.UTF_8) 感觉有点麻烦。为什么要坚持先转换为 URL?既然 getResource() 方法不会抛出异常,为什么不也有并行的 String 方法呢?

最佳答案

我很确定这一切都归结为正交性和可组合性。 API 明确区分获取 URL 用该资源做某事的资源。这很重要,因为您可以通过多种方式获取 URL。的资源。 Resources.getResource("foo")是一个,但它在某些情况下不起作用。如果您需要确保特定的 ClassLoader使用了(因为 Guava 可能由与您的应用程序文件不同的 ClassLoader 加载),您需要另一种获取 URL 的方法例如Resources.getResource("foo", SomeApplicationClass.class) .

如果Resources如果提供其方法的重载来处理所有这些情况,类中的方法数量将增加三倍。在这种特殊情况下,可能 似乎可以接受,但如果在整个库中添加类似的“快捷方式”,方法的数量会迅速增加。图书馆将变得更加难以消化,因为您必须在海量的方法中挖掘几乎相同的东西才能找到您想要的东西。出于这个原因,Guava 偏爱只做一件事并且可以与其他方法很好地结合的强大方法。合并Resources.toStringResources.getResource就是一个例子。

当然,这并不意味着 Guava 从不 提供此类快捷方式……它只是在添加确实值得时才提供。例如,Files 中的大多数方法类 可以 被删除,因为你可以组合 Files.newInputStreamSupplier , Files.newWriterSupplier ,等等。用ByteStreams中的方法和 CharStreams类来完成同样的事情。鉴于 File 上的常见操作但是,捷径被认为是值得的。 (但请注意,添加采用 String 文件名的重载。)

关于java - 为什么 Guava Resources 类没有方法的 String 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com