Java中代数 – cguntur

21-01-14 banq

代数–一个经常与学校数学联系在一起的术语,通常被理解为数学的一个分支,涉及符号和操作此类符号的规则。符号通常表示没有固定值(称为变量)的数量。

在编程语言中,它具有相似的含义。代数数据类型是包含变量的组合。组合也可以进一步包含其他类型作为变量。递归类型可以包含自身的另一个实例作为变量。代数是指通过代数运算创建代数数据类型的属性。

 

代数学习

总和类型

总和类型:

  • 表示交替(对于三个值A,B,C→A或B或C,但不包含任何组合或其他子集)。
  • 定义变体
  • 如果是逻辑OR运算符,则只能使用其中一种。

产品种类

产品类型:

  • 表示组合(对于三个值A,B,C→A和B和C,可能会保持一个或多个为空)。
  • 持有价值
  • 是逻辑AND运算符

模式匹配

模式匹配是检查令牌的给定序列是否存在某些模式的组成部分。本场比赛必须是精确的无歧义,所以必须评估到任何匹配或不匹配。

 

Java中的代数

总和类型

  • 枚举

枚举(enum)是一种特殊的总和类型。枚举一旦实例化,便无法与之关联其他数据。

枚举可以具有可以通过构造函数设置的最终属性,并且可以定义可以访问此类最终属性的方法。

一个enum可以声明它必须随后通过每个变体来实现抽象方法。同样,enum可以实现一个接口,但是每个变体都必须实现这样的接口。

一个enum可以被实例化或经由一个静态方法分配Enum.valueOf(String)。在valueOf()接受一个String实例和它匹配的声明枚举变量。

  • Optional

ava.util.Optional允许两个变体。可选包含指定泛型的值或为空。

Optional正确使用,可以防止恐惧NullPointerException。

另外,Optional保证对象的使用者将始终接收对象,并且可以对所包含的非空值(如果存在)进行处理或处理缺少的值。

  • 密封类型

Java以前要么是final封闭,要么non-final(开放,抽象),就继承而言,这是两个极端。在最近引入sealed类型之前,将继承和扩展限制为有限的集合并不容易。密封类型是Java 15中引入的。

 

产品种类

常规Java POJO(普通旧Java对象)类被视为产品类型。它是一个组合,允许将属性组合在一起。

  • 元组

一个特殊的POJO类,扩展了类提供的内容。Java中目前不包括元组,除了在实例上迭代时可用的短暂Map.Entry(API)之外Map。元组可以包括单元,成对,孪生,三元组等。使用集合时,元组非常有用。

  • 记录

record是Java 14中引入的不可变数据对象。

 

猜你喜欢