内部类初始用户,内部类的作用域属于:外部类对象,不同外部类对象中的内部类对象类型不同会报错type mismatch。
实例代码:
注意:
定义了一个外部类Person 和一个内部类Student
package com.hadoop.ljs.spark.study
主函数:
这里person2对象里面的student内部类对象 和person1对象里面的内部类对象报错 type mismatch
报错原因:由于默认情况下,内部类的作用域是:外部类对象 一定记住是外部类对象*
package com.hadoop.ljs.spark.study
报错截图:
有两种方式来扩大内部类对象作用域:
第一种方式:通过派生类对象
代码实例:
直接把Student定义在伴生对象object Person中,程序运行正常
package com.hadoop.ljs.spark.study
主函数类不再报错了:
package com.hadoop.ljs.spark.study
第二种方式扩大内部类作用域:类型投影
Person类代码:
注意:
代码第14行,这里用了Person#Student 用的是“#”号 通过类型映射:只要你是外部类的内部类对象我都识别为类型相同*/
package com.hadoop.ljs.spark.study
主函数我这里就不在写了,跟PersonTest代码相同,有兴趣的同学可以自己动手练一练。
本文分享自微信公众号 - 大数据开发运维架构(JasonLu1986)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。