gpt4 book ai didi

java - 在 Java 6 库中提供 Predicate 支持

转载 作者:行者123 更新时间:2023-11-30 08:22:34 25 4
gpt4 key购买 nike

我目前主要使用 Java 8,但同时也在创建一个使用 Java 6 的库,以便将来其他人也可以使用它,因为它非常有趣。

我现在遇到的问题是,我可以使用 Java 8 的 Predicate<T> 轻松解决一些问题。 ,但是我不确定如何向后移植它。

我看到以下选项可用,但它们要么有问题,要么我不确定如何使用它们:

  • 使用 Google Guava 的 Predicate<T> ,然而,这引入了一个相对较大的依赖关系,我并不真正需要它,当 Java 8 用户想要使用 Predicate 时也是如此。 ,然后 Google Guava 的导入为 Predicate类(class)出现。
  • 使用我自己的 Predicate<T> ,没有太大的依赖,还是和上面提到的一样的问题。
  • 使用自定义名称,例如 TessPredicate<T> ,因为 Tess 将是我项目中的相关名称,感觉也不太好。
  • 使用在项目设置中有意义的名称,例如(暂定)RegexVerficationPredicate ,因为除了使用正则表达式之外,它还是一个谓词,因此您还可以对元素进行计算。银行代码等通常有一些您需要计算的校验和。作为功​​能接口(interface)实现,这可能是最可行的?
  • 向后移植 java.util.function从 Java 8 到 Java 6,这可能吗?

我该如何解决这个问题?

最佳答案

你不能向后移植 java.util.function由于大量使用 default 的包和 static这些接口(interface)中的方法。这样的反向移植看起来会很不一样。

我建议创建您自己的 Predicate<T>接口(interface)尽可能最小,即具有与 Java 8 具有相同签名的单个抽象方法 Predicate<T> .具有与众所周知的相同的接口(interface)名称和方法签名,就像 self 文档一样。

这意味着使用 Java 8 的程序员仍然可以使用 lambda 表达式或方法引用来实现您的谓词(甚至无需导入您的 interface )。使用 Java 8 谓词就像传递 predicate::test 一样简单到你的方法。

为一个接口(interface)添加对整个第 3 方库的依赖在我看来很讨厌。

关于java - 在 Java 6 库中提供 Predicate 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279818/

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