Scala扩大内部类作用域的方式有哪些
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"Scala扩大内部类作用域的方式有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2026年11月01日Scala扩大内部类作用域的方式有哪些
本篇内容介绍了"Scala扩大内部类作用域的方式有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
内部类初始用户,内部类的作用域属于:外部类对象,不同外部类对象中的内部类对象类型不同会报错type mismatch。
实例代码:
注意:
定义了一个外部类Person 和一个内部类Student
package com.hadoop.ljs.spark.studyimport scala.collection.mutable.ArrayBuffer/** * @author: Created By lujisen * @company ChinaUnicom Software JiNan * @date: 2020-02-08 22:49 * @version: v1.0 * @description: com.hadoop.ljs.spark.study */class Person { class Student(val name:String){} val students=new ArrayBuffer[Student] def getStudent(name:String):Student={ return new Student(name) }}主函数:
这里person2对象里面的student内部类对象 和person1对象里面的内部类对象报错 type mismatch
报错原因:由于默认情况下,内部类的作用域是:外部类对象 一定记住是外部类对象*
package com.hadoop.ljs.spark.study/*** @author: Created By lujisen* @company ChinaUnicom Software JiNan* @date: 2020-02-08 22:19* @version: v1.0* @description: com.hadoop.ljs.spark.study*/object PersonTest{def main(args: Array[String]): Unit = {val person1=new Person()val studentA=person1.getStudent("ljs1")person1.students+=studentAval person2=new Person()val studentB=person2.getStudent("ljs2")/*这里person2对象里面的student内部类对象 和person1对象里面的内部类对象报错 type mismatch* 这里由于默认情况下,内部类的作用域是:外部类对象 一定记住是外部类对象*/person1.students+=studentB}}
报错截图:
有两种方式来扩大内部类对象作用域:
第一种方式:通过派生类对象
代码实例:
直接把Student定义在伴生对象object Person中,程序运行正常
package com.hadoop.ljs.spark.studyimport com.hadoop.ljs.spark.study.Person2.Studentimport scala.collection.mutable.ArrayBuffer/** * @author: Created By lujisen * @company ChinaUnicom Software JiNan * @date: 2020-02-08 22:43 * @version: v1.0 * @description: com.hadoop.ljs.spark.study */object Person2{ class Student(val name:String){}}class Person2 { val students=new ArrayBuffer[Person2.Student] def getStudent(name:String):Student={ return new Student(name) }}主函数类不再报错了:
package com.hadoop.ljs.spark.study/*** @author: Created By lujisen* @company ChinaUnicom Software JiNan* @date: 2020-02-08 22:37* @version: v1.0* @description: com.hadoop.ljs.spark.study*/object PersonTest2 {def main(args: Array[String]): Unit = {val person1=new Person2()val studentA=person1.getStudent("ljs1")person1.students+=studentAval person2=new Person2()val studentB=person2.getStudent("ljs2")person1.students+=studentB}}
第二种方式扩大内部类作用域:类型投影
Person类代码:
注意:
代码第14行,这里用了Person#Student 用的是"#"号 通过类型映射:只要你是外部类的内部类对象我都识别为类型相同*/
package com.hadoop.ljs.spark.studyimport scala.collection.mutable.ArrayBuffer/*** @author: Created By lujisen* @company ChinaUnicom Software JiNan* @date: 2020-02-08 22:55* @version: v1.0* @description: com.hadoop.ljs.spark.study*/class Person3 {class Student(val name:String){}/*注意这里用了Person#Student 用的是"#"号 通过类型映射:只要你是外部类的内部类对象我都识别为类型相同*/val students=new ArrayBuffer[Person3#Student]def getStudent(name:String):Student={return new Student(name)}}
"Scala扩大内部类作用域的方式有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
对象
作用
类型
方式
部类
代码
情况
不同
相同
内容
函数
实例
更多
知识
别为
实用
学有所成
接下来
原因
困境
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
上海睿民互联网科技有限公司
互联网科技有限公司图片
互联网扶贫科技
互联网金融 金融科技
致骋互联网科技
小马过河互联网科技
未来的互联网科技
润盈互联网科技
互联网金融 科技创新
深圳卡尔迅互联网科技有限公司怎么样
互联网科技生活的内容
华脉科技工业互联网产品
互联网科技公司招聘
小米互联网科技园设置
央行互联网金融科技公司
广州恒生互联网科技有限
辽宁互联网新科技
互联网科技扶贫时间
互联网的科技体现在哪里
中关村互联网科技集团
万易互联网科技有限公司
互联网科技公司做什么
互联网和高科技公司
中国航天科技大学国际工业互联网
苏州铭阳互联网科技有限公司
畅思互联网科技
元气玛特互联网科技公司是外包吗
浙南科技城互联网大厦招聘
重庆科技产业互联网有哪些