比较器私有变量可以使用

justdo_ 2016-12-20 12:12:35
各位大神会晤,小弟使用Comparator接口对Student对象中的score进行比较,score是private变量,为什么22行可以直接使用 a.score, b.score?
...全文
203 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜鸟面条 2016-12-21
  • 打赏
  • 举报
回复
自己的东西可以自己用啊
解开者 2016-12-21
  • 打赏
  • 举报
回复
可见性是对于类而不是对象来说的,也就是Student这个类的代码里边都可以使用private修饰的东西
bcsflilong 2016-12-20
  • 打赏
  • 举报
回复
引用 2 楼 soton_dolphin 的回复:
因为你使用了内部类去实现comparator
正解
soton_dolphin 2016-12-20
  • 打赏
  • 举报
回复
因为你使用了内部类去实现comparator
  • 打赏
  • 举报
回复
自己私有的东西自己不能用还让谁用
soton_dolphin 2016-12-20
  • 打赏
  • 举报
回复
这种写法形成了一种闭包,外部类的所有变量都会存在于闭包的这个环境里。
soton_dolphin 2016-12-20
  • 打赏
  • 举报
回复
引用 4 楼 justdo_ 的回复:
[quote=引用 2 楼 soton_dolphin 的回复:] 因为你使用了内部类去实现comparator
我还是不懂啊,比如我把 compare()的代码改成下面: Student.this.score 我能理解可以使用。但是compare方法在外部调用的时候传入的 是a,b对象,不是当前对象,a.score 怎么能够使用呢[/quote] 你在外部调用不到的。只能在这个类的内部调用。
Be_nurturing 2016-12-20
  • 打赏
  • 举报
回复
定义的Student类,中有score这个属性,参数a,b是Student类型的对象,当然可以使用score属性了。
justdo_ 2016-12-20
  • 打赏
  • 举报
回复
引用 2 楼 soton_dolphin 的回复:
因为你使用了内部类去实现comparator


我还是不懂啊,比如我把 compare()的代码改成下面:

Student.this.score 我能理解可以使用。但是compare方法在外部调用的时候传入的 是a,b对象,不是当前对象,a.score 怎么能够使用呢

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧