栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有没有一种方法可以模拟Java中的C ++“朋友”概念?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有没有一种方法可以模拟Java中的C ++“朋友”概念?

这是我在JAVA中用来复制

C ++
朋友机制的一个小技巧。

可以说我有一节课

Romeo
和另外一节课
Juliet
。由于仇恨原因,他们处于不同的包裹(家庭)中。

Romeo
想要
cuddle Juliet
并且
Juliet
只想让
Romeo cuddle
她。

C ++
中,
Juliet
将声明Romeo为(情人),friend但是在Java中没有这样的东西。

这是类和技巧:

女士优先 :

package capulet;import montague.Romeo;public class Juliet {    public static void cuddle(Romeo.Love love) {        Objects.requireNonNull(love);        System.out.println("O Romeo, Romeo, wherefore art thou Romeo?");    }}

所以方法Juliet.cuddle是,public但是你需要Romeo.Love调用它。它使用此方法Romeo.Love作为“签名安全性”,以确保只能Romeo调用此方法并检查爱情是否真实,这样运行时将抛出a NullPointerException如果是null。

现在男孩:

package montague;import capulet.Juliet;public class Romeo {    public static final class Love { private Love() {} }    private static final Love love = new Love();    public static void cuddleJuliet() {        Juliet.cuddle(love);    }}

该类

Romeo.Love
public
,但是其构造函数是
private
。因此,任何人都可以看到它,但只能Romeo构造它。我使用静态引用,因此
Romeo.Love
从未使用过的引用只会被构建一次,并且不会影响优化。

因此,

Romeo
只能
cuddle Juliet
并且只能他可以,因为只有他可以构造和访问Romeo.Love实例,这
Juliet
cuddle
她是必需的(否则她会给你打一个NullPointerException)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号