Google Guava 供应商示例

2024-03-29

请用合适的例子解释Supplier(in Guava)接口的使用。


The Supplier接口只是一个返回值的无参数函数的抽象...它是一个获取对象的某个或多个实例的方法。因为它很通用,所以可以用来做很多事情。贾里德解释了如何Multimaps工厂将其用作创建新实例的工厂Collection某种类型的值。

鉴于界面的简单性,它还允许对对象进行一些非常强大的装饰Supplier的行为,将其包装在另一个中Supplier这会以某种方式改变它的行为。记忆就是其中一个例子。我用过Suppliers.memoizeWithExpiration我自己的方法是一种简单的方法,这样在给定的时间段内,某些数据最多只能从服务器读取一次。

我还建议您看一下 Guice 以及如何Provider里面用到了接口。Provider完全等于Supplier这是 Guice 工作方式的核心。

  • Provider允许用户定义创建给定类的新对象的自定义方式。用户可以写一个get()方法可以执行创建新对象所需的任何代码,因此它们不限于让 Guice 单独使用构造函数来创建对象。在这里,他们使用它来定义自定义factory对于对象的新实例。
  • Guice 允许注入Provider任何依赖性。这可能每次都会返回一个新实例get()被调用,或者它可能总是返回单个实例或两者之间的任何内容,具体取决于绑定的方式Provider代表有范围。这也允许依赖项的“延迟实例化”......Provider给出一个类 a创建对象的方法无需提前实际创建对象。不需要创建对象的实例,直到以下情况:get()叫做。
  • 如上所述,Provider它们构成了 Guice 范围界定的基础。如果你看一下Scope http://google-guice.googlecode.com/svn/trunk/javadoc/com/google/inject/Scope.html接口,你会注意到它的单一方法Provider<T> scope(Key<T> key, Provider<T> unscoped)定义为Providers。该方法需要创建对象的新实例的东西 (the Provider<T> unscoped)并返回一个Provider<T>基于应用范围定义的任何策略,可能返回对象的某些缓存实例,而不是创建一个新实例。默认NO_SCOPE范围只是沿着unscoped提供者,意味着每次都会创建一个新实例。这SINGLETON范围缓存第一次调用的结果unscoped.get()然后返回该单个实例,确保依赖于单例范围对象的所有内容都获得对该单个对象的引用。请注意,Provider由返回SINGLETON范围的scope方法确实本质上是同一件事 as the Supplier由返回Suppliers.memoize(虽然有点复杂)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Guava 供应商示例 的相关文章

  • 方法返回类型前的 是什么意思?

    下面的方法返回一个List组成T类型元素 public
  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • “源兼容性”和“目标兼容性”有什么区别?

    之间有什么关系 区别sourceCompatibility and targetCompatibility 当它们设置为不同的值时会发生什么 根据工具链和兼容性 https docs gradle org current userguide
  • 连接外部 Accumulo 实例和 java

    我正在尝试使用 Accumulo 连接到虚拟机 问题是 我无法将其连接到 Java 中 我可以看到 Apache 抛出的网页 但我无法让它与代码一起工作 我认为这是缺乏知识的问题而不是真正的问题 但我找不到这方面的文档 所有示例都使用 lo
  • Java 中的 <-- 是什么? [复制]

    这个问题在这里已经有答案了 我遇到了下面的片段 它输出到4 3 2 1 我从来没有遇到过 lt 在爪哇 Is lt 使 var1 的值变为 var2 的运算符 public class Test public static void mai
  • 我们可以有条件地声明 spring bean 吗?

    有没有一种方法可以有条件地声明 Spring bean 例如
  • 通过Zuul上传大文件

    我在通过 zuul 上传大文件时遇到问题 我正在使用 apache commons 文件上传 https commons apache org proper commons fileupload https commons apache o
  • 什么是内部类的合成反向引用

    我正在寻找应用程序中的内存泄漏 我正在使用的探查器告诉我寻找这些类型的引用 但我不知道我在寻找什么 有人可以解释一下吗 Thanks Elliott 您可以对 OUTER 类进行合成反向引用 但不能对内部类实例进行合成 e g class
  • 未装饰窗户的 Windows Snap 功能?

    有谁知道如何允许未装饰的窗户使用此功能 唯一的选择就是重新实施它 有任何想法吗 谢谢 可停靠可能是唯一的JToolBar http docs oracle com javase tutorial uiswing components too
  • 如何使用 Java 引用释放 Java Unsafe 内存?

    Java Unsafe 类允许您按如下方式为对象分配内存 但是使用此方法在完成后如何释放分配的内存 因为它不提供内存地址 Field f Unsafe class getDeclaredField theUnsafe Internal re
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • 直接读取程序计数器

    Intel CPU 上的程序计数器可以在内核模式或其他模式下直接读取 即没有 技巧 吗 不 EIP IP 无法直接访问 但在位置相关代码中 它是链接时间常量 因此您可以使用附近 或远处 的符号作为立即数 mov eax nearby lab
  • 使用python(windows)创建两个子进程

    使用Python编程语言完成以下任务 创建两个进程 我们称之为 P1 和 P2 P1应该打印 我是P1 P2应该打印 我是P2 主进程 创建 P1 和 P2 的进程 应该等待它们 然后 P1和P2完成后 主进程应该打印 我是主进程 两个进程
  • 在特定行之后添加行

    我正在尝试将特定行添加到文件中的特定区域 我正在使用这个 new file open file txt r for line in new file if line Include below line line nIncluded tex
  • Find() 与Where().FirstOrDefault()

    我经常看到人们使用Where FirstOrDefault 进行搜索并获取第一个元素 为什么不直接使用Find 对方有优势吗 我看不出有什么不同 namespace LinqFindVsWhere class Program static
  • 使用正则表达式修剪电话号码

    可能是一个简单的正则表达式问题 如何从电话号码中删除除前导 之外的所有非数字 i e 012 3456 gt 0123456 1 234 56789 gt 123456789
  • 为什么模式匹配一​​个单词而有两个相同的单词?

    请看一下这个 如你所见 只有one匹配于regex101 但浏览器匹配two相同的单词 所以为什么regex101无法匹配第二个单词 无论如何我需要匹配这两个词 或更多 如果存在的话 注意到它与以下内容无关g旗帜 因为我在小提琴中使用过它
  • CreateProcessAsUser 和 LogonUser 无密码

    使用 WTSGetActiveConsoleSessionId 和 WTSQueryUserToken 我知道作为 SYSTEM 运行的服务可以在当前桌面上启动应用程序 http blog dcuktec com 2009 05 pytho
  • 防止 Azure B2C 自定义策略中的电子邮件更改

    有没有办法防止密码重置期间更改电子邮件 有密码恢复的标准政策 但我不喜欢在那里更改电子邮件 该电子邮件用作与其他应用程序集成的 ID 密码重置期间更改电子邮件不会更改用户的实际电子邮件 如果用户验证电子邮件但随后意识到这不是他们想要重置密码
  • python 使用 numpy 进行位移

    我正在使用 64 位无符号整数 并在位移后比较该值 然后再解码其余位值 我正在迭代数百万个值并尝试最大程度地减少处理时间 问题是 uint64 和 numpy uint64 都不支持位移位 我试图避免使用 int64 以避免负值 示例数据
  • PHP HTML 净化器和 MathML

    有没有什么简单的方法可以允许所有 MathML 标签在 HTML Purifier 中具有属性 我试图将所有 MathML 标签从https developer mozilla org en US docs Web MathML Eleme
  • 是否有实体框架 7 数据库优先 POCO 生成器?

    我一直在为我正在开发的一个新项目使用 Entity Framework 7 和 ASP NET 5 但遇到了障碍 我所在的团队使用 DBA 优先的开发方法 即数据库由 DBA 设计 然后开发人员更改代码以补偿模型更改 使用 EF6 效果很好
  • 如何使图像高度适合并置文本高度

    我有一个图像和一个并排的文本 图像在左边 文本在右边 关于如何根据文本段落高度 以及宽度与高度保持比例 调整图像高度的任何想法 而不是将文本环绕在图像周围 这是我所能做到的 div style display table width 100
  • Flask jsonify 支持 UTF-8 吗?

    我一直在使用 Flasks 和 jsonify 进行实验 有用 但不支持 utf 8 字符 土耳其字符 我正在使用字典 if api key in key list quotes ataturk Hayatta En Hakiki Murs
  • 如何在启动时完全停止 Android Studio 索引/扫描/构建?

    我怎样才能停止这个索引或任何这个启动过程 它是做什么用的 它为什么这么做 我可以在以后最需要的时候推迟加载这么大的进程吗 我通过无效并重新启动解决了这个问题 我在循环中遇到了这个问题 在没有运行或构建任何东西的情况下不停地索引 文件 gt
  • ModelAttribute 可以是原始的吗?

    我在 Spring MVC 3 0 中的 ModelAttribute 上遇到了一个奇怪的问题 当我在本地主机部署应用程序时 它工作正常 但是当我在远程服务器上部署该应用程序时 每次用户访问特定操作时它都会失败 并出现错误 ERROR my
  • 互斥的powershell参数

    SCENARIO 我正在使用 Visual Studio 2008 和 NET 3 5 为 Powershell 2 0 编写 cmdlet 该 cmdlet 需要 3 个参数 我想要的 cmdlet 语法是这样的 cmdletname f
  • Apache2中可以有两个密码文件吗?

    我可以在 apache2 sites enabled 000 default 配置文件中包含两个 AuthUserFile 指令吗
  • Google App Engine“搜索”的测试床存根

    我正在尝试使用开发应用程序服务器在 Python 中测试 Google App Engine 的新全文搜索功能 是否有存根search https developers google com appengine docs python se
  • Spark:“无法使用 UnspecifiedFrame。这应该在分析过程中进行转换。请提交错误报告”

    Spark 2 3 0 与 Scala 2 11 我正在尝试编写一个自定义聚合器并在每个窗口函数上运行它这些文档 https spark apache org docs latest sql programming guide html t
  • Google Guava 供应商示例

    请用合适的例子解释Supplier in Guava 接口的使用 The Supplier接口只是一个返回值的无参数函数的抽象 它是一个获取对象的某个或多个实例的方法 因为它很通用 所以可以用来做很多事情 贾里德解释了如何Multimaps