视图界定的介绍应用实例2 | 学习笔记

简介: 快速学习视图界定的介绍应用实例2

开发者学堂课程【Scala 核心编程 - 进阶视图界定的介绍应用实例2学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9156


视图界定的介绍应用实例2


视图界定应用案例2

说明:

使用视图界定的方式,比较两个 Person 对象的年龄大小。

val p1 = new Person("tom" 10)

val p2 = new Person("jack", 20)val compareComm2=newCompareComm2(p1p2) printin(compareComm2.getter)class Person(val name: String,val age:Int)extends Ordered[Person]{

override def compare(that: Person): Int =this.age -that.age override def toStringString =this.name +"\t" + this.age}

class CompareComm2[T<% Ordered[T](obj1:Tobj2:T){

def getter = if (obj1 > obi2) obj1 else obi2

def geatter2 = if (obj1.compareTo(obj2) > 0) obi1 else obj2

}

person 继承了 ordered。ordered 里面有一个接口的实现,有一个 compared 可以用然后写了一个类叫 compared to用了图界定,是 ordered T 的一个类型传进去就可以用了两个对象传进去就可以用,这是视图鉴定的一个案例

下面来看一下:新建一个包:

image.png

package com.atguigu.chapter18.viewbounds

object ViewBoundsDemo02 {

def main(args: Array [string]): Unit = {

val p1 = new Person("tom" 10)

val p2 = new Person("jack", 20)val compareComm2=newCompareComm2(p1p2) printin(compareComm2.getter.name)//jack

}class Person(val name: String,val age:Int)extends Ordered[Person]{

//重写了ordered的方法compare

//override def compare(that: Person): Int =this.age -that.age

override def compare(that: Person): Int ={

this .age-that.age

}

//这里是重写 tostring,为了显示方便

override def toStringString =this.name +"\t" + this.age}

}

//比较Cat的名字的长度大小

class Cat(val name:string) extends Ordered[cat] {

override def compare(that: Cat): Int ={

this.name.length - that.name.length

}

}

//说明

//1. T<% OrderedT] 表示T是ordered子类型 java.lang.Comparable

//2. 这里调用的compareTo方法是T这个类型的方法

class CompareComm2[T<% Ordered[T](obj1:Tobj2:T){

def getter = if (obj1 > obi2) obj1 else obi2

def geatter2 = if (obj1.compareTo(obj2) > 0) obi1 else obj2

}

点击运行:

image.png

假如要比较两只猫:

val cat1 = new cat("smith")

val cat2 = new cat("tom")

println(new CompareComm2(cat1,cat2),getter.name) // smith

只要实现了 ordered 的 treat,就可以统一的经营管理。没有时间传不进去的这个是一个常规用法

如果明确说是order那肯定要接受,如果没有,

image.png

假如这个地方没有继承从这个方法就传不进去了。

image.png

这就是视图界定的第二个实例。

相关文章
|
3月前
|
应用服务中间件 Java Maven
掌控视图的力量!深入解析 JSF 视图管理,揭秘视图生命周期的秘密,让你的应用更高效!
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的框架,用于管理 Web 应用程序的视图。本文通过具体案例介绍 JSF 视图管理的基础知识,包括创建、管理和销毁视图的过程。首先,在 Eclipse 中创建一个新 JSF 项目,并配置 Maven 依赖。接着,在 `WEB-INF` 目录下配置 `web.xml` 文件,设置 JSF servlet。
53 0
|
3月前
|
存储 开发框架 前端开发
EAV模型(实体-属性-值)的设计和低代码的处理方案(3)-- 实体属性定义及前端列表展示和数据录入处理
EAV模型(实体-属性-值)的设计和低代码的处理方案(3)-- 实体属性定义及前端列表展示和数据录入处理
|
6月前
|
存储 运维 安全
第十五章信息(文档)和配置管理(选择3分)
第十五章信息(文档)和配置管理(选择3分)
|
6月前
|
Kubernetes 网络协议 Cloud Native
k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)
k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)
157 0
|
Scala 开发者
视图界定的介绍应用实例1 | 学习笔记
快速学习视图界定的介绍应用实例1
视图界定的介绍应用实例1 | 学习笔记
|
Scala 开发者
视图界定的介绍应用实例3 | 学习笔记
快速学习视图界定的介绍应用实例3
视图界定的介绍应用实例3 | 学习笔记
|
编译器 Scala 开发者
上下文界定介绍和应用实例 | 学习笔记
快速学习上下文界定介绍和应用实例
上下文界定介绍和应用实例 | 学习笔记
|
JavaScript 开发者 容器
路由-使用命名视图实现经典布局|学习笔记
快速学习路由-使用命名视图实现经典布局
路由-使用命名视图实现经典布局|学习笔记
|
前端开发 网络架构
前端工作总结151-动态路由和表结构无关
前端工作总结151-动态路由和表结构无关
103 0
|
前端开发
前端工作总结262-理解绑定逻辑
前端工作总结262-理解绑定逻辑
72 0
下一篇
无影云桌面