java项目friends_Java中Friend概念的实现
小编典典
Java没有C++中的friend关键字。但是,有一种方法可以模拟这种情况。实际上可以提供更精确控制的方法。假设您具有类A和B。B需要访问A中的某些私有方法或字段。
public class A {
private int privateInt = 31415;
public class SomePrivateMethods {
public int getSomethingPrivate() { return privateInt; }
private SomePrivateMethods() { } // no public constructor
}
public void giveKeyTo(B other) {
other.receiveKey(new SomePrivateMethods());
}
}
public class B {
private A.SomePrivateMethods key;
public void receiveKey(A.SomePrivateMethods key) {
this.key = key;
}
public void usageExample() {
A anA = new A();
// int foo = anA.privateInt; // doesn't work, not accessible
anA.giveKeyTo(this);
int fii = key.getSomethingPrivate();
System.out.println(fii);
}
}
usageExample()显示了它是如何工作的。B的实例无权访问A实例的私有字段或方法。但是,通过调用GiveKeyTo(),类B可以获得访问权限。没有其他类可以访问该方法,因为它需要一个有效的B作为参数。构造函数是私有的。
然后,类B可以使用密钥中传递给它的任何方法。尽管设置起来比C ++老友记关键字要笨拙,但要细得多。类A可以选择要公开给哪些类的确切方法。
现在,在上述情况下,A授予对B的所有实例和B的子类实例的访问权限。如果不需要后者,则GiveKeyTo()方法可以使用getClass()在内部检查其他类型的确切类型,并抛出如果不是B,则为例外。
2020-11-13
java项目friends_Java中Friend概念的实现相关推荐
- cmd编译整个java项目_cmd中使用javac对整个包编译怎么办?对包里面的某几个java文件编译怎么办?...
展开全部 JAVAC 命令62616964757a686964616fe59b9ee7ad9431333335306262详解 结构 javac [ options ] [ sourcefiles ] ...
- Java基础学习总结(167)——Java项目实践中如何实现幂等
什么是幂等性? 幂等是一个数学与计算机学概念,在数学中某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同. 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行 ...
- Oracle数据库学习笔记(二十八)--在Java项目开发中使用ojdbc连接Oracle数据库
选择正确的 Jar 包 Oracle 10g 选择使用 ojdbc14.jar Oracle 11g 选择使用 ojdbc6.jar 将 Jar 包安装到本地 Maven 仓库中 具体方法参考我之前发 ...
- Java项目开发中的DO、BO、DTO、VO、PO的区别
VO view object:视图对象,用于展示层,把某个指定页面的展示数据封装起来 DTO Data Transfer Object:用于展示层与服务层之间的数据传输对象 BO Business O ...
- 如何真正的吃透一个Java项目?
如何真正的吃透一个Java项目?这里要说吃透一个Java项目的标准就是:下次遇到此类Java项目可以快速使用写过的Java项目的解决方案完成它. 要达到这个的标准,还得从开发一个Java项目的过程来分 ...
- 如何学习Java? 在学习Java的过程中需要掌握哪些技能?
作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多如下的困惑:如何学习Java? 在学习Java的过程中需要掌握哪些技能?Java学习过程中有哪些注意事项? ...
- Java项目框架搭建系列(Java学习路线)-博客提纲 (转自一位技术大佬)
前言: 已经毕业两年,真是时间飞逝. 其实当你在一间公司工作一两年之后,公司用到的开发框架的基本使用你应该都会了. 你会根据一个现有项目A复制一下搭建出另外一个类似框架的项目B,然后在项目B上进行业务 ...
- 如何用eclise创建java项目到创建包到创建类?
Eclise创建java项目到创建包到创建类流程 第一步: ① 打开eclise ② 点击New ③ 点击Project... 第二步: ① 选中Java Project ② 点击Next 进行下一步 ...
- Java项目运行,解决“java.sgl.SQLSyntaxErrorEx: Unknown column ‘user0_.qrcode‘ in ‘field list!” 问题
在Java项目开发过程中,很多时候为了方便,我们会在实体类中新建一个属性,但数据表中并没有对应的字段:这种情况下,运行项目很有可能会遇到这样的报错信息: 解决办法有两种,分情况处理: 方法一,项目使用 ...
最新文章
- 还在用肉眼找不同吗?这个技术轻松搞定
- 设计模式(3)-装扮你的类(装饰模式)
- 【实战演练】两种方法让 Docker 帮您快速构建应用程序
- FAQ宝典之常见问题排查与修复方法
- 数据结构——树与二叉树
- java 堆转储快照_Java堆转储:您可以完成任务吗?
- Linux使用RSA实现免密登录(原理)
- 127.0.0.1与localhost的区别
- 【Python】圆周率的计算
- es6 Class 的 name 属性
- 惊喜不止小米9!小米又一4800万新机确认:不给友商机会?
- C++ 输入和输出IO
- XNA:2D图元与3D模型共存时的渲染问题
- 【Dart语言第6篇】Dart类
- 全裸或半裸的大肚照国际接轨 细数女星大尺度斗艳孕照
- C: warning: too many arguments for format [-Wformat-extra-args]
- 【冬镜网】什么是搜索引擎优化?
- linux系统下部署python自动化程序并配置Jenkins定时执行
- 一文助你入门HTML(❤ ω ❤)
- 自动驾驶汽车的库尔雪维尔测试是不可能的挑战