gpt4 book ai didi

java - 使用 Java 泛型寻找模式和 API 设计

转载 作者:搜寻专家 更新时间:2023-11-01 03:39:14 25 4
gpt4 key购买 nike

我在处理 Java 集合和 Guava 时广泛使用泛型。我在使用 API 时非常了解它:

  1. PECS规则
  2. {co, contra, in}方差
  3. 通配符
  4. 有界泛型

但是,我发现很难使用泛型来设计 API。是否有 Java 泛型的设计模式?或者对 Java 泛型的任何引用也会有所帮助。我读过:

  1. 高效的 Java
  2. 《Java 泛型和集合》一书
  3. http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html

我只熟悉泛型有用的两种模式:

  1. 遏制概念:Java 集合、Guava Optional<T>
  2. 类型参数化:Guava Predicate<T> , Function<T>

最佳答案

大多数标准设计模式都是关于标准 OO 中固有的具有继承和组合的临时多态性。泛型是关于参数多态性的。您的第二个“模式”基本上包含了整个概念,所以我不会称其为模式。

那么什么是参数模式?

Lender 模式怎么样。借出或借用什么类型的资源并不重要,因此可以作为通用参数。

工厂也可以用泛型来表达。正在生成的实例的类型是一个参数。

函数式或回调对象通常以 void 和 T-return 形式出现。

这是您要求的抽象级别吗?

我会在想出更多答案时继续编辑这个答案。

就 API 而言,我的经验法则是尝试接受尽可能多的类型,这意味着在方法参数中基本上使用尽可能多的通配符,使用方差来决定是 extends 还是super 是合适的,它返回尽可能具体的类型,这意味着尽可能少的类型变量或通配符。

关于java - 使用 Java 泛型寻找模式和 API 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340858/

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